Вход

Просмотр полной версии : Кэширование подгружаемых объектов


всеникизаняты
07.07.2006, 02:18
Привет

Кто-нибудь интересовался вопросом кэширования подгружаемых во флешку внешних картинок/мувиков/данных? Поскольку процесс загрузки полностью скрыт за loadMovie, ни о каком влиянии на обмен HTTP заголовками между удаленным сервером и флешем наверное и речи быть не может. Чисто субъективно кэширования нет: флешу пофиг, старая ли твоя картинка или нет, то же самое при закачке XML. Или я не прав и на это можно влиять?

etc
07.07.2006, 02:42
Не прав насчет того, что не кешируется. Кеширует браузер.

kayama
07.07.2006, 10:34
Кэширует первую флэшку, будь то прелодер или просто свиф(пустой), дальше все грузится заново.

всеникизаняты
07.07.2006, 12:57
2 etc
Браузер кэширует. Если вебсервер, конечно, заголовки шлет. Но дело в том, что, как говорит kayama, баннер-то тянет то картинки в себя будучи уже на клиентской машине. И вот тут проверяется-ли загружаемая флешкой инфа на момент необходимости обновления...

iNils
07.07.2006, 13:00
К имени фала добавляешь случайное значение и у тебя всегда "самое свежее"

всеникизаняты
07.07.2006, 14:33
:-)
Дело в том, что мне самое свежее и не надо. Мне надо чтобы он проверял, обновился ли документ на сервере, который он тянет или нет. Вот посмотрю заголовки, которые он посылает, все станет ясно.

всеникизаняты
07.07.2006, 14:34
Обясню мой случай: баннер тянет на себя XML с сервера. Этот XML обновляется в среднем раз в неделю, смысла тянуть его каждый раз нет.

всеникизаняты
07.07.2006, 14:35
В случае применения кэширования, при отсутствии на сервере обновленной версии все коммуникации баннера с сервером ограничиваются обменом HTTP заголовками.

etc
07.07.2006, 14:49
Ну так пропишите в заголовке кеширование на неделю... Запрос файла делает браузер, а не флешка.

В чём проблема?

всеникизаняты
07.07.2006, 15:06
Вот нарисовалась проблема в общих чертах, хотя, впрочем уже и решение есть.

Факты:
1.Весь обмен HTTP-заголовками в случае встроенного в HTML флеша осуществляется браузером на общих основаниях.
2.Скрипт генерит XML.
3.Браузер НЕ проверяет кэширование скриптов (логично, да?), но проверяет кэширование картинок, котороые мы грузим во флеш и XML файлов. Возникает идея через mod_rewrite заставить его думать, что он обращается к XML.
4.Идея эта оказывается бредовая, поскольку нет смысла проверять дату, когда изменился скрипт, ибо влияет только фактор, когда изменились данные, которые отдает скрипт.
Выход - генерить статический XML файл каждый раз, когда в данных происходят изменения. В этом случае будет работать кэширование и XML документы не будут таскаться по сети.

всеникизаняты
16.07.2006, 17:35
Все-таки тут есть проблема. Я не знаю логику работы флеша, но по каким-то своим внутренним соображениям он запрашивает у сервера "изменился ли файл", который надо XML.load(), только несколько раз, а потом даже перестает обращаться к серверу и все время показывает одно и то же, причем ctrl+f5 браузера не помогает.
Тут на форуме есть только один вариант решения (на сколько я понял):
дописывать к имени запрашиваемого файла уникальную строку. К сожалению, в этом случае мы полностью лишаем себя тех прекрасных средств кэширования, которые предоставляет HTTP протокол. При запросе статического контента браузер спрашивает у сервера: "а изменился ли этот файл со времени последней его скачки?". И он забирает его только в том случае, если файл изменился. В случае же с флешем, он работает непрозрачно, то есть он как-то сам определяет, передавать ли браузеру запрос на файл или нет. Это, конечно, большой недостаток. Уж и не знаю, существует ли способ порешить его...