Моя цель
Я бы хотел, чтобы браузеры кэшировали весь мой сайт, но загружали только статический контент, когда меняли один или несколько файлов.
Моя ситуация
После некоторых исследований я нашел способ сделать это. То есть добавить Far Future Expires Header
в мой htaccess файл и добавить к ним запросы с помощью функции filemtime()
.
Проблема
Когда я нажимаю на адресную строку и набираю адрес своего веб-сайта в firefox, тогда отображаются Firebug
38.3 KB (36.4 KB from cache)
Когда я нажимаю F5 в firefox, Firebug показывает:
241.1 KB (10.9 KB from cache)
Теперь я попытался сделать то же самое с Google, и они отправляют HTTP-заголовок 304 назад. Я много читал об ETag и заголовке Last Modified, но я слышал много людей, которые говорили, что они не очень надежны.
Мой вопрос
Что было бы лучшим решением, если бы я хотел отправить HTTP-заголовок 304 обратно со статическим содержимым, если пользователь нажимает на F5, например Google?
Я задаю этот вопрос, потому что часто посещаю сайт и использую F5, чтобы узнать, есть ли какая-то новая информация. Не перезагружать изображения и т. Д.
Обновить
Похоже, что Firefox контролирует способ использования кеша, и я бы хотел использовать кеш, когда пользователь нажимает F5.
Самой целью перезагрузки является перезагрузка страницы. Мастера заголовка сервера не существует, если браузер был пропущен, чтобы игнорировать кеши, когда пользователь конкретно запрашивает его.
Решение для Google заключается в том, что вы проверяете, отправил ли искатель заголовок If-Modified-Since с:
if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) { header("HTTP/1.0 304 Not Modified"); exit(); }
Этот трюк может работать для браузеров, но не в режимах принудительной перезагрузки , таких как SHIFT + RELOAD Firefox.
Вы также можете использовать новую функцию кэширования приложений.
Я не знаю, каков ваш целевой браузер, но большинство браузеров поддерживали его в течение нескольких версий.
Таким образом вы можете определить, что ваша статика загружается только один раз.
Для получения очень хорошей информации по этому вопросу вы можете ознакомиться с этой страницей:
http://diveintohtml5.ep.io/offline.html
Я не уверен, что понимаю смысл вашего вопроса, но вы можете указать код ответа в php с функцией заголовка, независимо от того, нажимает ли ваш пользователь кнопку или нет.