Если mod_expires используется в .htaccess, будут ли измененные файлы загружены клиентом?

Если mod_expires используется в .htaccess, будут ли измененные файлы загружены клиентом?

Я пытаюсь использовать кэширование для ускорения времени отклика веб-сайта. Большая часть документации, которую я прочитал, предлагает установить срок действия на +1 месяц с момента доступа следующим образом:

ExpiresActive On
ExpiresByType text/css "access plus 1 month"

Я обеспокоен тем, что если я обновлю файл CSS, клиент не получит обновленный файл.

Можно ли гарантировать, что клиент загрузит новую версию файла, если он был изменен?

Любая помощь будет высоко оценена.

решение1

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

Один из способов обойти это — при обновлении файла CSS изменить HTML, который ссылается на него, чтобы в конце атрибута href тега ссылки (т. е. после .css) было ?v=2 или ?v=3 и т. д. Браузеры видят это как уникальный URL и, таким образом, загружают новую копию, но она будет указывать на тот же физический файл .css на вашем сервере.

<link rel="stylesheet" type="text/css" href="/styles.css" />

становится

<link rel="stylesheet" type="text/css" href="/styles.css?v=2" />

Связанный контент