Цитата мудреца

Голосование

Система Orphus. Если вы заметили ошибку на сайте, нажмите сюда.
Загружается, подождите...
Начало сайта Материалы сайта Программы
Версия для слабовидящих
Версия для печати

Опыт кэширования страниц

Мои программы: Free ware, Know how и коммерческие предложения. Статьи по программированию и коды скриптов.
  Нет сообщений • Страница 1 из 1

Опыт кэширования страниц

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


Опишу сначала задачу. Есть флэш-плэйер, который должен обращаться к скрипту на сервере, чтобы тот выдал ему в качестве результата mp3-содержимое. И когда посетитель сайта нажимает паузу, а потом снова воспроизведение, флэшка заново начинает закачивать файл (именно с самого начала) и как только доходит до места останова, возобновляет воспроизведение. Реакция, прямо скажем, нежелательная. Выход — чтобы содержимое бралось из кэша. Скажу сразу, что идеально в этой ситуации повёл себя лишь Internet Explorer. Он действительно всё загнал в кэш и брал потом оттуда. Это выражалось в том, что когда весь файл загружался, паузы между нажатием возобновления и началом звучания практически не было. А вот остальные браузеры тормозили.


И я начал своё исследование. Прежде всего добавил следующие заголовки перед выдачей содержимого:


Код: Выделить всё
Cache-Control: public, max-age=86400, must-revalidate
Expires: Sat, 27 Nov 2010 11:33:30 +0300 (на сутки больше текущей)

Безрезультатно. Mozilla Firefox пытается создать кэш, но в этом кэше Expires почему-то оказывается в январе 1970 г. И тут я обратил внимание на то, что мой скрипт почему-то выдаёт заголовок Pragma: no-cache. Это, скорей всего, сервер подсовывает. Я видел это, но не обращал внимания, т.к. везде в интернете написано, что Pragma — устаревший стандарт, и ни один браузер его уже не поддерживает. На всякий случай решил написать:


Код: Выделить всё
Pragma: cache

И — о чудо! — заработало! Правда опять-таки не везде. Mozilla Firefox начал действительно пользоваться кэшем, при чём Expires в нём стал именно тем, который указывал я. Google Chrome тоже стал бодрее возобновлять звучание. А вот Оперу я так и не победил. Что-то ей ещё не хватает.


Итак, вот что у меня выдаёт сейчас скрипт (и сервер вместе с ним)


Код: Выделить всё
Server: nginx/0.7.65
Date: Fri, 26 Nov 2010 08:33:30 GMT
Content-Type: audio/mpeg
Connection: keep-alive
X-Powered-By: PHP/5.2.8
Expires: Sat, 27 Nov 2010 11:33:30 +0300
Cache-Control: public, max-age=86400, must-revalidate
Pragma: cache
Content-Length: 5430102
Accept-Ranges: bytes
Ответить

  Нет сообщений • Страница 1 из 1

Вернуться в Программы



Кто сейчас на сайте

Зарегистрированные пользователи: Yandex [bot]