Как установить срок действия кэша после модификации?

Я использую файл.htaccess для установки заголовков сайта. Я хочу знать, как установить срок действия кэша файлов после того, как на них будет произведено изменение. Это возможно?

будет ли это работать?

ExpiresDefault "modification"

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

2 ответа

Срок действия модификации устанавливает срок действия кэша через определенное время после последней модификации файла. Даже если ваш файл будет снова изменен в течение установленного срока кэширования, клиенты, которые уже кэшировали файл, не будут искать новую версию. Apache Expiration содержит информацию о модуле expire.

Вот пример:

#BEGIN Cache-Control Headers
<ifModule mod_headers.c>
   <filesMatch "\.(css|js)$">
      ExpiresDefault "modification plus 4 weeks"
  </filesMatch>
</ifModule>
# END Cache-Control Headers

Если ваш файл CSS был изменен 1 неделю назад, срок действия кэша истекает через 3 недели вместо 4.

Итак, как вы получаете ваш недавно измененный файл CSS, чтобы показать после того, как файл уже был кэширован?

Если вы измените свой CSS-файл, изменения не будут отображаться в кэшированном браузере, пока не истечет срок действия кэша. Одним из способов решения этой проблемы является изменение имени кэшированного файла CSS. (Пример переименования main1.css -> main2.css)

Я думаю, что вы неправильно поняли заголовок expires. Заголовок expires сообщает получателю, как долго он может кэшировать файл локально. После этого периода получатель должен повторно запросить ресурс. Если сервер сообщает, что ресурс истекает через час, но ресурс изменится через минуту. Это займет еще 59 минут, пока получатель не получит эту модифицированную версию. Сервер не может уведомить получателя о преждевременном истечении срока действия ресурса.

Другие вопросы по тегам