1

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

i.e Будет ли это работать?

ExpiresDefault "modification" 

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

ответ

0

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

+0

Истекает Модификация в основном противоположна тому, что необходимо. Для этого нужно установить заголовок «expired», чтобы увидеть, когда последний файл кэша был изменен – user734063

1

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

Вот пример:

#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)

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