Edge Side включает и проверочный кеш в Symfony 2 - PullRequest
5 голосов
/ 09 марта 2012

Можно ли использовать кэш проверки в ESI с Symfony 2?

Если вы посмотрите класс HttpFoundation Response , вы увидите, как работает isNotModified:

/**
 * Determines if the Response validators (ETag, Last-Modified) match
 * a conditional value specified in the Request.
 *
 * If the Response is not modified, it sets the status code to 304 and
 * removes the actual content by calling the setNotModified() method.
 *
 * @param Request $request A Request instance
 *
 * @return Boolean true if the Response validators match the Request, false otherwise
 *
 * @api
 */
public function isNotModified(Request $request)
{
    $lastModified = $request->headers->get('If-Modified-Since');
    $notModified = false;
    if ($etags = $request->getEtags()) {
        $notModified = (in_array($this->getEtag(), $etags) || in_array('*', $etags)) && (!$lastModified || $this->headers->get('Last-Modified') == $lastModified);
    } elseif ($lastModified) {
        $notModified = $lastModified == $this->headers->get('Last-Modified');
    }

    if ($notModified) {
        $this->setNotModified();
    }

    return $notModified;
}

Проблема в том, что ESI $ request-> headers-> get ('If-Modified-Since'); и $ request-> getEtags () ничего не возвращают в ESI ... поэтому кеш никогда не обновляется!

Так есть ли у вас решение для запроса $?

Если кеш проверки HTTP не может работать в ESI, есть ли другой способ кешировать частичное?

Спасибо!

1 Ответ

1 голос
/ 11 марта 2012

Я не использовал ESI с Symfony2 (пока) - но статья по документации Symfony2 Использование Edge Side Includes , похоже, предполагает, что это довольно простой процесс.

...