Чи ігнорує Chrome reloadButton кеш-пам'ять?


1

Я використовую Chrome і відстежую http-з'єднання. Я завантажую сторінку, і відповідь, повернута сервером, містить

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

Тому я не очікував, що Chrome зробить запит на сервер, коли я намагаюся перезавантажити цю сторінку. Однак, коли я натискаю кнопку «Перезавантажити», я бачу нове з'єднання з сервером, який, у свою чергу, повертає ту саму сторінку з новою датою закінчення терміну дії кешу.

У когось є пояснення?

EDIT

Ось запит і відповідь , який я отримую кожен раз, коли я натискаю на кнопку перезавантаження (крім того, що час для Date, Expiresа значення CF-RAYв відповідь щоразу змінюється)

Запит

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

Відповідь

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

Чи можете ви вставити скріншот журналу мережі? Чи є 304 не змінені журнали?
easwee

Ні, сервер повертає 200 з усім xml. Я відредагував своє запитання, щоб додати детальний запит та відповідь
J_D

Відповіді:


1

Так, Chrome навмисно "перетворює кеш-пам'ять", встановлюючи максимальний вік до 0, натискаючи "Перезавантажити". Дивіться джерело тут: ResourceFetcher.cpp: 676

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

і тут: FrameLoader.cpp: 1176

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

(Я думаю, що це правильні місця, я не надто знайомий з кодом Chromium.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.