Моя цель
Я хочу, чтобы браузеры кэшировали весь мой веб-сайт, но загружали новую информацию только тогда, когда я изменил один или несколько файлов.
Моя ситуация
После некоторого исследования я нашел способ сделать это. То есть добавить 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?
Обновить
Кажется, что Firefox контролирует способ использования кеша, и я хотел бы использовать кеш также, когда пользователь нажимает F5.
Избегайте условных запросов - если вы не обслуживаете большие объемы очень больших файлов (например, видео), они действительно могут значительно замедлить работу вашего сайта.
что они не совсем надежны.
IME, они очень надежны, но при этом очень неэффективны.
но загружать новую информацию только тогда, когда я изменил один или несколько файлов.
Не меняйте файлы - создавайте новые URL для нового контента. Вы не можете отменить уже выданную информацию о кешировании.
То есть добавить заголовок Far Future Expires в мой файл htaccess и добавить строку запроса в мои файлы с помощью функции filemtime ()
Ой, извините, вы уже это делаете.
Нажатие клавиши f5 в браузере - нереальный способ измерить кэшируемость.
Да, вы можете ответить 304, если браузер условный запрос и условиям соответствует текущий контент - но, как указано выше, это не лучший способ справиться с ситуацией - предположим, что у вас есть точечная графика, появляющаяся 4 раза на странице. По истечении срока действия кеша браузер будет отправлять 4 условных запроса источнику каждый раз при загрузке этой страницы. Хотя вы можете отправить новые инструкции кэширования в ответе 304, на практике это обычно не так просто. Помните, что задержка - гораздо большая проблема, чем пропускная способность.
Когда вы используете Apache2, есть модуль под названием "срок действия мода истекает" мы используем его здесь для кеширования. Модуль устанавливает заголовок срока действия для запросов.
Как предлагается @symcbean, и рекомендуется использовать уникальные URL-адреса, чтобы избежать проблем с устаревшим / новым контентом. В любом случае, чтобы удалить 304 запроса, удалите теги ETags и Last-Modified.
Приведенный ниже URL-адрес дает полезные советы по ускорению / кешированию веб-страниц.
http://www.askapache.com/htaccess/apache-speed-last-modified.html