Chrome ricarica il pulsante ignora la cache?


1

Sto usando Chrome e monitorando le connessioni http. Carico una pagina e la risposta restituita dal server contiene

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

Pertanto, non mi aspetto che Chrome faccia una richiesta al server quando provo a ricaricare questa pagina. Tuttavia, quando premo il pulsante Ricarica, vedo una nuova connessione al server che a sua volta restituisce la stessa pagina con una nuova data di scadenza per la cache.

Qualcuno ha una spiegazione?

MODIFICARE

Ecco la richiesta e la risposta che ricevo ogni volta che premo il pulsante di ricarica (tranne che il tempo per Date, Expires e il valore di CF-RAY nella risposta cambia ogni volta)

Richiesta

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

Risposta

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'?>
...

Puoi incollare uno screenshot del log di rete? Esistono 304 log non modificati?
easwee

No, il server restituisce un 200 con l'intero xml. Ho modificato la mia domanda per aggiungere la richiesta dettagliata e la risposta
J_D

Risposte:


1

Sì, Chrome "interrompe la cache" intenzionalmente impostando il valore massimo su 0 quando fai clic su "Ricarica". Vedi la fonte qui: ResourceFetcher.cpp: 676

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

e qui: FrameLoader.cpp: 1176

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

(Penso che questi siano i punti giusti, non ho familiarità con il codice Chromium.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.