Как можно сделать недоступным файл flex mxml, запускаемый на сервере в виде файла swf / html?

#python #html #apache-flex

#python #HTML #apache-flex

Вопрос:

У меня есть приложение, разработанное на flex, развернутое на сервере. В приложении данные заполняются пользователем и сохраняются в файлах cookie, чтобы быть доступными, даже когда пользователь закрывает приложение. Однако, если выпущена новая версия приложения, пользователь все еще может получить доступ к более старой версии, сохраненной в cahe. Как можно гарантировать, что всякий раз, когда выпускается новая версия приложения, приложение загружается с сервера, а не из кэша, и в то же время данные, сохраненные в старой версии (в файлах cookie), также могут быть доступны в новой версии. Любые указания по выполнению этого с использованием html, flex или python будут полезны.

Спасибо

Ответ №1:

Достаточно просто, вам просто нужна уникальная строка запроса в конце swf-файла:

 <object width="550" height="400">
<param name="movie" value="somefilename.swf?key=<ADD RANDOM NUMBER HERE>">
<embed src="somefilename.swf?key=<ADD RANDOM NUMBER HERE>" width="550" height="400">
</embed>
</object>
  

Как вы создаете это случайное число, зависит от вас, но для этого вам нужно использовать язык на стороне сервера (например, php), а число, которое я обычно использую, — это просто временная метка.

Комментарии:

1. Я предполагаю, что приведенный выше код, добавляя случайное число в конце, будет извлекать файл с сервера, потому что каждый раз, когда мы его запускаем, его путь будет отличаться. Но, как я сказал выше, мне нужны файлы cookie также предыдущей версии, которые будут использоваться в текущей версии. И если я изменю имя файла, то файлы cookie, связанные с предыдущим файлом / формой, будут недоступны в текущей форме

2. @sandy, ‘path’ не отличается. Если вы используете Flash cookies, они все равно будут такими же, поскольку зависят от домена.

Ответ №2:

Идея случайной строки запроса — хороший способ убедиться, что swf загружается каждый раз, но это может быть не то, что вы действительно хотите сделать. Особенно, если ваш swf-файл большого размера и его лишь изредка требуется обновлять. Что бы я хотел сделать, так это создать службу, которая выводит номер самой последней версии моего swf. Вам нужно будет придумать схему версий, которая работает для вас (например, это может быть номер сборки svn). При изменении номера сборки swf новый swf загружается в веб-браузер. Этого можно было бы добиться, если бы ваш старый swf-файл выполнял вызов службы в начале процесса загрузки, если он обнаружит, что номер сборки swf более новый, чем его собственный, он вызовет javascript в веб-браузере, вызывающий перезагрузку swf-файла, добавляя новое значение к исходному URL (используя метод случайной строки запроса). Вызов javascript будет выполнен с использованием ExternalInterface.call (в Actionscript).

При таком подходе вы можете кэшировать свой swf-файл до тех пор, пока более новый swf-файл не будет доступен для загрузки, что сэкономит пропускную способность ваших пользователей и нагрузку / bandwidth вашего сервера.