O reloadButton do Chrome ignora o cache?

1

Estou usando o Chrome e monitorando as conexões http. Eu carrego uma página e a resposta retornada pelo servidor contém

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

Portanto, não esperaria que o Chrome fizesse uma solicitação ao servidor quando eu tentar recarregar esta página. No entanto, quando pressiono o botão Recarregar, vejo uma nova conexão com o servidor que, por sua vez, retorna a mesma página com uma nova data de expiração para o cache.

Alguém tem uma explicação?

EDITAR

Aqui está a solicitação e a resposta que recebo toda vez que pressiono o botão de recarregamento (exceto que o tempo de Date , Expires e o valor de CF-RAY na resposta muda sempre)

Solicitação

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

Resposta

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'?>
...
    
por J_D 17.07.2013 / 16:58

1 resposta

1

Sim, o Google Chrome intencionalmente "destrói o cache" definindo max-age para 0 quando você clica em "Recarregar". Veja a fonte aqui: ResourceFetcher.cpp: 676

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

e aqui: FrameLoader.cpp: 1176

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

(acho que esses são os lugares certos, não estou muito familiarizado com o código do Chromium.)

    
por 09.10.2013 / 00:00