Сайт с оптимальным управлением кешем - PullRequest
6 голосов
/ 03 марта 2011

Моя цель
Я хотел бы разрешить браузерам кэшировать весь мой веб-сайт, но загружать статический контент только тогда, когда я изменил один или несколько файлов.

Моя ситуация
После некоторых исследований я нашел способ сделать это. То есть добавить 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.

Ответы [ 3 ]

2 голосов
/ 07 марта 2011

Сама цель reload - перезагрузить страницу. Нет никакого волшебства заголовка на стороне сервера, если было замечено, что браузер игнорирует кэши, когда пользователь специально запрашивает их.

Решение для Google заключается в том, что вы проверяете, отправил ли сканер заголовок If-Modified-Since с:

if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {
    header("HTTP/1.0 304 Not Modified");
    exit();
}

Этот прием может работать для браузеров, но не в режимах принудительная перезагрузка , как в Firefox SHIFT + RELOAD.

1 голос
/ 03 марта 2011

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

Для получения очень хорошей информации по этому вопросу вы можете взглянуть на эту страницу:
http://diveintohtml5.ep.io/offline.html

0 голосов
/ 03 марта 2011

Я не уверен, что понимаю смысл вашего вопроса, но вы можете указать код ответа в php с помощью функции заголовка, независимо от того, нажимает ли ваш пользователь кнопку.

http://php.net/manual/en/function.header.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...