2013-05-07 2 views
0

Вот пример JavaScript файл запрос/ответ:Почему браузеры не кэшируют эти статические файлы?

Request URL:http://local/index.js?time=1367958844038 
Request Method:GET 
Status Code:200 OK 

Request Headers 
Accept:*/* 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
DNT:1 
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31 

Response Headers 
cache-control:max-age=31536000 
content-encoding:gzip 
content-type:application/javascript 
expires:Wed, 07 May 2014 20:34:04 GMT 
last-modified:Tue, 07 May 2013 20:34:04 GMT 
transfer-encoding:chunked 

Как вы можете видеть, сервер отвечает управление кэшем, истекает, и даже последнее изменение, но каждый раз, когда я перезагружать либо F5 или щелкнув введите в адресной строке запрос выглядит одинаково (я ожидаю, что браузер отправит if-modified-since и т. д.)

Это происходит в Chrome и Firefox по крайней мере.

+0

Дайте 'ETag' попробовать? – Ryan

ответ

1

Возможно, потому что параметр URL time изменяется с каждым запросом.

Поскольку URL-адрес отличается, браузер не может использовать ранее кэшированный ответ.

+0

На самом деле время такое же. Я просто заметил, что запрос файла напрямую использует кеш! Но при загрузке со страницы это не так. – Ahmed

+0

На самом деле, похоже, он кэшируется! Но браузер не делает if-modified-since, и сервер возвращает 200 OK, но все же он извлекается из кеша. – Ahmed

+0

Инструменты Dev лежат вам (или, по крайней мере, они очень вводят в заблуждение). Когда вы видите запрос с кодом состояния: 200 OK (из кеша) ', это означает, что браузер * даже не выдавал * условный HTTP-запрос. Он просто захватил содержимое из кеша - никакой сетевой активности вообще. Если вы используете что-то вроде Fiddler, вы даже не увидите запрос. – josh3736

Смежные вопросы