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

Голосование

Какими из перечисленных способов Вы готовы оплачивать покупки в интернет-магазинах?
 
Система 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

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



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

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