2

Я занимаюсь разработкой веб-приложения и настроил свои файлы JavaScript и CSS так, чтобы их срок истек. Я отправляю обратно клиенту, что каждый файл был последний раз изменен год назад и срок действия каждого файла истекает через год. Проблема в том, что Firefox и Chromium, похоже, игнорируют заголовки ответа и перезагружают статические файлы каждый раз при перезагрузке страницы.

Opera, с другой стороны, работает как положено. То есть он кеширует файлы с далёким будущим временем.

Я использую Ubuntu 10.04, Firefox 3.6.8 и Chromium 5.0.375.125. По умолчанию Firefox и Chromium не кэшируют файлы с локального хоста? Есть ли способ изменить эту настройку? У кого-нибудь есть идеи о том, что еще может заставить их не кэшироваться?

Это заголовки ответа, которые я отправляю обратно клиенту:

Server    Development/1.0
Date    Tue, 31 Aug 2010 15:44:16 GMT
Content-Language    en
Expires    Wed, 31 Aug 2011 15:44:16 GMT
Vary    Accept-Language, Cookie
Last-Modified    Mon, 31 Aug 2009 15:44:16 GMT
Cache-Control    max-age=31536000
Content-Type    text/css
Content-Length    32493

Спасибо!

1 ответ1

0

Чтобы ответить на ваш вопрос, Chromium и Firefox или любой другой браузер в этом отношении будут кэшировать файлы с локального хоста. Проблема в том, что вы используете директиву, которая сохраняется только для обратной совместимости.

Другими словами, в старые времена это был путь. Установив дату истечения срока действия в далеком прошлом, они заставят браузер не отображать страницу из кэша. Вероятно, Chromium и / или Firefox просто игнорируют эту директиву.

С другой стороны, у вас есть несколько хороших альтернатив:

  • Контроль кеша: No-cache: будет повторно проверен на сервере, прежде чем обслуживать страницу из кеша.
  • Управление кешем : must-revalidate, браузер должен пройти повторную проверку на сервере, прежде чем отправлять его из кеша.
  • Cahce Control: не хранить, не кэшировать и не хранить страницу в папке кэша

Помните, что вы все еще находитесь в зависимости от браузера, и у каждого есть свой (к сожалению) способ справиться с этими директивами.

Источник: Демистифицированные директивы контроля кэша

И вы также должны прочитать это, где объясняется, что основной механизм истечения изменился: при использовании как Expires, так и max-age, директива max-age переопределит заголовок Expire.

Источник: 14.9.3. Изменения в базовом механизме истечения срока действия

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .