Я пытаюсь использовать кэширование для ускорения времени отклика веб-сайта. Большая часть документации, которую я прочитал, предлагает установить срок действия на +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" />