Разъяснения по использованию заголовка "Cache-Control" - PullRequest
2 голосов
/ 27 августа 2010

Мы пытаемся улучшить время загрузки страницы сайта.В дополнение к нескольким другим оптимизациям я добавил фильтр сервлетов для установки заголовков « Cache-Control » в файлы изображений (png, gif, jpg).Как и ожидалось, файлы изображений теперь кэшируются на стороне клиента, и я могу проверить время истечения каждого файла, проверив временную папку (IE). Мой вопрос заключается в том, что браузеры по-прежнему запрашивают статические ресурсы иполучает ответ HTTP304 (не изменен).Я имею в виду, что, по сути, я добился того, что я уменьшил количество передаваемых байтов, но не количество сетевых обращений (что в моем случае немного медленно).Есть ли другой заголовок / способ остановить браузеры, проверяющие сервер, был ли ресурс изменен?

Ответы [ 3 ]

1 голос
/ 06 сентября 2010

@ chedine,

Кэшированные в браузере файлы не должны возвращать 304, они должны возвращать 200. Вы должны использовать mod_expires, чтобы установить максимальный возраст, и mod_headers, чтобы установить заголовки Cache-Control.,Вот пример, который возвращает действительный ответ 200 для кэшированных статических файлов браузера:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css M5184000
    ExpiresByType application/x-javascript M5184000
    ExpiresByType text/html M1200
    ExpiresByType text/plain M1200
    ExpiresByType image/gif M31536000
    ExpiresByType application/x-gzip M31536000
    ExpiresByType image/x-icon M31536000
    ExpiresByType image/jpeg M31536000
    ExpiresByType image/png M31536000
</IfModule>

<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
    <IfModule mod_headers.c>
         Header set Vary "Accept-Encoding, Cookie"
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
</FilesMatch>
0 голосов
/ 27 августа 2010

Да, в самом браузере.например, в IE, в разделе «Настройки истории просмотра», опция «Проверить наличие новых версий сохраненных страниц» - выбор «Никогда» будет «учитывать» истечение срока действия и позволит избежать запроса / неизменной поездки на сервер, пока не наступит указанная дата истечения.

0 голосов
/ 27 августа 2010

Каковы ваши настройки управления кэшем, вы должны иметь возможность установить максимальный возраст и не возвращать его в течение определенного периода времени.

Возможно, вы захотите попробовать fiddler, чтобы посмотреть ваш http запрос / ответ и убедиться, что это именно то, что вы думаете.

Подробнее см. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...