¿Es posible usar la caché de validación en un ESI con Symfony 2?Edge Side Includes y caché de validación en Symfony 2
Si se mira la clase HttpFoundation Response, se puede ver cómo funciona 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;
}
El problema es que ESI $ request-> headers-> get ('If-Modified-Since'); y $ request-> getEtags() no devuelve nada en un ESI ... ¡así que el caché nunca está actualizado!
¿Tienes una solución para la solicitud $?
Si la validación del caché HTTP no puede funcionar en un ESI, ¿hay alguna otra forma de almacenar en caché el parcial?
¡Gracias!
Sí, con caché de caducidad esto es realmente fácil y funciona! Pero parece que no funciona cuando uso el caché de validación ... así que traté de solucionarlo y parece que no es posible ... – Sybio