Останов браузера для выполнения HTTP-запросов изображений, которые должны оставаться в кэше – mod_expires

Прочитав много статей и несколько вопросов здесь, мне наконец удалось активировать Apache mod_expires, чтобы сообщить Браузер ДОЛЖЕН кэшировать изображения на 1 год.


  ExpiresActive On
  ExpiresDefault "access plus 1 year"
  Header append Cache-Control "public"

И, к счастью, ответы сервера кажутся правильными:

HTTP/1.1 200 OK 
Date: Fri, 06 Apr 2012 19:25:30 GMT 
Server: Apache 
Last-Modified: Tue, 26 Jul 2011 18:50:14 GMT 
Accept-Ranges: bytes 
Content-Length: 24884 
Cache-Control: max-age=31536000, public 
Expires: Sat, 06 Apr 2013 19:25:30 GMT
Connection: close
Content-Type: image/jpeg 

Ну, я думал, что это остановит загрузку браузера и даже запросит сервер об изображениях на 1 год. Но это частично верно: причина , если вы закрываете и снова открываете браузер, браузер больше НЕ загружает изображенияс сервера, но браузер по-прежнему запрашивает у сервера HTTP-запрос для каждого изображения.

Как заставить браузер прекратить отправлять HTTP-запросы для каждого изображения? Даже если эти HTTP-запросы не сопровождаются загрузкой изображения, они все равно являются запросами к серверу, которые излишне увеличивают задержку и замедляют рендеринг страницы!

Я уже сказал браузеру, что он ДОЛЖЕН хранить изображения в кеше в течение 1 года! Почему браузер по-прежнему запрашивает сервер для каждого изображения (даже если он не загружает изображение)?!


Глядя на сетевые графики в FireBug (меню FireBug > Сеть > Изображения), я вижу различное поведение кэширования (очевидно, я начал с полностью пустого кеша браузера, я принудительно удалил кеш в браузере, используя «Очистить всю историю»):

  • Когда страница загружается в первый раз, загружаются все изображения(то же самое происходит, если я принудительно перезагружаю страницу, нажимая кнопку перезагрузки страницы в браузере). В этом есть смысл!

  • Когда я перемещаюсь по сайту и возвращаюсь на ту же страницу, изображения вообще не загружаются, и браузер даже НЕ запрашивает у серверакакие-либо изображения. Это имеет смысл (и я хотел бы видеть такое же поведение, когда браузер закрыт)!

  • Когда я закрываю браузер и снова открываю его на той же странице, глупый браузер все равно делает HTTP-запрос к серверу один раз для каждого изображения: он НЕ загружает изображение, но все равно делает HTTP-запрос, это похоже на браузер запрашивает у сервера изображение(сервер отвечает 200 OK).Вот это меня раздражает!

Я также прикрепляю графики ниже, если вам интересно:

enter image description here

enter image description here

РЕДАКТИРОВАТЬ: только что протестировано также с FireFox 11.0, просто чтобы убедиться, что это не проблема того, что мой FireFox 3.6 слишком устарел. Тоже самое бывает!!! Я также проверил сайт Google и сайт Stackoverflow, они оба отправляют Cache-Control: max-age=... , но браузер по-прежнему отправляет HTTP-запрос к server для каждого изображения, как только браузер закрывается и снова открывается на той же странице, после ответа сервера браузер НЕ загружает изображение (как я объяснил выше), но все равно делает чертов запрос, который увеличивает время просмотра страницы.

EDIT2: и удаление заголовка Last-Modified, как предлагается здесь, не решает проблему, это не имеет никакого значения.

45
задан Marco Demaio 20 November 2012 в 19:20
поделиться