Исправление агрессивного кеширования Flash - PullRequest
3 голосов
/ 13 декабря 2010

У меня есть флэш-приложение, которое загружает большой кусок данных, который иногда меняет , поэтому я настроил свой сервер для отправки Last-Modified заголовков и ответа 304 Not Modified, если версия клиента не устареть.

Он отлично работает в любом браузере, но Flash полностью игнорирует это и агрессивно кеширует ресурс. Он даже не отправляет запрос на сервер, он просто получает кэшированный файл с диска, когда вы пытаетесь URLLoader.load ранее посещенный URL.

Обходы, которые я нахожу в Google, мне не помогают - либо вы кешируете навсегда, либо повторно загружаете ресурс каждый раз (изменяя параметры URL). Мне нужна смесь из них - повторная загрузка при обновлении ресурса, в противном случае используйте кеш.

Ответы [ 2 ]

4 голосов
/ 13 декабря 2010

Вы можете использовать номер версии в качестве параметра URL-адреса ... Таким образом, он не будет перезагружаться при каждой загрузке Flash Player, только когда вы фактически измените номер версии

1 голос
/ 13 декабря 2010

Не знаю, сработает ли это, но стоит попробовать.

Вы можете попробовать добавить код прерывания кэша в запрос файла.Обычно это можно сделать, добавив произвольную строку символов в конец имени файла, например, new URLRequest("bigFile.foo?uncache=273095285209750").Для вас вместо использования случайной строки вы можете использовать объект даты для генерации строки.Например ...

var now:Date = new Date();
var request:URLRequest = new URLRequest("bigFile.foo?uncache=" + new Date(now.year, now.month, now.date));

Это, мы надеемся, заставит контент повторяться один раз в день (или час, или как часто вы хотите).Если вам нужен еще более детальный контроль, вы можете написать короткий скрипт на стороне сервера, чтобы увидеть, был ли файл изменен, и проверить это, прежде чем запрашивать огромную загрузку.

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