У меня есть сайт Joomla, работающий на сервере Apache, и у меня возникают проблемы с браузерами Firefox и Chrome, кэширующими страницу и не поддерживающими последнюю версию.
Я добавил этот код в свой файл htaccess:
<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 60 seconds"
# My favicon
ExpiresByType image/x-icon "access plus 1 month"
# Images
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType image/jpg "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
# CSS
ExpiresByType text/css "access plus 1 week"
# Javascript
ExpiresByType application/javascript "access plus 1 week"
</IfModule>
Если я очищаю кеш браузера в Chrome и Firefox, а затем загружаю сайт, я получаю правильные заголовки ответов для изображений, css и javascript в соответствии с приведенным выше кодом.
Для основного документа я получаю эти заголовки ответов при первой загрузке:
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Wed, 17 Aug 2005 00:00:00 GMT
Pragma: no-cache
Но когда я перезагружаю страницу или даже открываю ее на новой вкладке, эти заголовки с истекающим сроком действия исчезают, и браузер загружает кэшированную веб-страницу (с кодом состояния 304 без изменений).
Я затрудняюсь понять, что здесь происходит. Я на Mac и использую Safari, у которого нет ни одной из этих проблем, поэтому я озадачен, почему Chrome и Firefox ведут себя не так, как я ожидаю.
Возможно, это могло бы объяснить, почему страница имеет другой набор заголовков ответа в отношении истечения срока действия, чем по умолчанию в htaccess. Так работает mod_expires?
Я надеюсь, что здесь достаточно информации, чтобы ответить на мой вопрос, заранее спасибо.