¿Chrome reloadButton ignora el caché?


1

Estoy usando Chrome y monitoreando las conexiones http. Cargo una página y la respuesta devuelta por el servidor contiene

Cache-Control: max-age=86400
Expires: Thu, 18 Jul 2013 14:51:22 GMT

Por lo tanto, no esperaría que Chrome haga una solicitud al servidor cuando intento volver a cargar esta página. Sin embargo, cuando presiono el botón Recargar, veo una nueva conexión al servidor que a su vez devuelve la misma página con una nueva fecha de vencimiento para el caché.

Alguien tiene una explicación?

EDITAR

Aquí está la solicitud y la respuesta que recibo cada vez que se presiona el botón de recarga (excepto que el tiempo para Date, Expiresy el valor de CF-RAYla respuesta cambia cada vez)

Solicitud

GET /mobile_13.xml HTTP/1.1
Host    triton.karnaval.com
Cache-Control   max-age=0
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36
Accept-Encoding gzip,deflate,sdch
Accept-Language en-US,en;q=0.8
Cookie  __cfduid=d518a34eae859853e9a8dbfb6eb4078ed1366655468

Respuesta

HTTP/1.1 200 OK
Server: cloudflare-nginx
Date: Wed, 17 Jul 2013 14:51:20 GMT
Content-Type: text/xml
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: max-age=86400
Expires: Thu, 18 Jul 2013 14:51:19 GMT
Vary: Accept-Encoding
CF-RAY: 8f7bfeaf5f50697
Content-Encoding: gzip

<?xml version='1.0' encoding='UTF-8'?>
...

¿Puedes pegar una captura de pantalla del registro de red? ¿Hay 304 registros no modificados?
easwee

No, el servidor devuelve 200 con todo el xml. Edité mi pregunta para agregar la solicitud y respuesta detalladas
J_D

Respuestas:


1

Sí, Chrome intencionalmente "rompe el caché" al establecer max-age en 0 cuando hace clic en "Recargar". Vea la fuente aquí: ResourceFetcher.cpp: 676

if (isReload || frameLoadType == FrameLoadTypeSame || request.isConditional() || request.httpMethod() == "POST")
    return ReloadIgnoringCacheData;

y aquí: FrameLoader.cpp: 1176

if (request.cachePolicy() == ReloadIgnoringCacheData) {
    if (m_loadType == FrameLoadTypeReload)
        request.setHTTPHeaderField("Cache-Control", "max-age=0");

(Creo que estos son los lugares correctos, no estoy muy familiarizado con el código Chromium).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.