Распространение изменений в существующей теории приложений SWF - PullRequest
0 голосов
/ 12 июля 2011

Допустим, у нас есть онлайн-приложение, написанное на AS3 и работающее с сервера как SWF. Первая версия, которая выйдет - V1.0.

Несколько пользователей, некоторые из которых находятся за прокси-сервером, используют приложение V1.0, и теперь на клиентских компьютерах и прокси-сервере есть кэшированная копия.

V1.1 выпущен и размещен на сервере. Все пользователи должны видеть V1.1, но результаты могут отличаться, некоторые будут получать свежую копию, некоторые будут получать копию своего кэша в течение определенного периода, и, наконец, некоторые будут обслуживаться копией кэша на прокси-сервере.

Я могу быть кодом в V1.0, который проверяет переменную сервера, чтобы определить, устарела ли она. НО, если он устарел, есть ли способ в AS3 заставить его загрузить свежую копию или применить различия в себе?

Учитывая, что у меня нет доступа к прокси-серверу, и я не могу вручную или автоматически очистить кеш.

Ответы [ 3 ]

2 голосов
/ 12 июля 2011

У вас может быть предварительный загрузчик-обертка, который запрашивает номер последней версии с сервера при каждом запуске приложения, а затем загружает SWF-файл приложения последней версии.

Существуют также мудрые решения для распространения обновлений, такие как http://treetide.com/swfcontrol/

2 голосов
/ 12 июля 2011

Является ли SWF единственным кэшируемым? Если это так, то вы можете использовать кешбустер при загрузке страницы.

Обратитесь к своему SWF-файлу следующим образом: main.swf? Timestamp = 7062956829 это заставит прокси-сервер считать его другим файлом и не обслуживать кэшированный ресурс.

1 голос
/ 13 июля 2011

Я думаю, что Citizen Conn предлагает простое решение, хотя и вносит ненужную нагрузку на сервер.

Вы можете использовать подход Citizen Conn, но вместо метки времени просто используйте тег версии приложения.

main.swf?app_version=1.1

Другой подход заключается в принудительном обновлении самого приложения с использованием подхода DigitalD.

Но, поскольку вы используете это на html-странице контейнера, контейнер может также кэшироваться, поэтому вам нужнозаставить перезагрузить контейнер ...

...