Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка последней версии флешки (http://www.flasher.ru/forum/showthread.php?t=174414)

searinox 25.01.2012 02:25

Загрузка последней версии флешки
 
Как сделать так что бы браузер пользователя, когда он очередной раз входит на сайт, загружал самую последнюю версию флешки, а не использовал ту которую уже загрузил?

carrotoff 25.01.2012 10:37

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

Код AS3:

url += "?rnd="+new Date().getTime();


searinox 25.01.2012 21:30

В лоадер добавляется? Или в саму загружаемую флешку? Если честно, я не до конца не понял тебя.

Inet_PC 25.01.2012 21:42

В лоадере:
Код AS3:

loader.load(new URLRequest(url += "?rnd="+new Date().getTime()));

Где url адрес загружаемой флешки.

dimarik 25.01.2012 22:11

Я припоминаю только один вменяемый способ. Он завязан на сервер, отдающий вместо new Date().getTime() признак измененного файла swf. В остальных случаях вы будете получать файл из кэша браузера.

new Date().getTime() заставит всегда загружать swf. Мне это очень не нравится. И моим пользователям тоже.

searinox 25.01.2012 22:48

Странная какая-то конструкция. Кто-то может объяснить как она работает? Что делает "?rnd=" ?

Добавлено через 2 минуты
dimarik А можно немного подробнее об этом признаке?

dimarik 25.01.2012 23:03

Цитата:

Сообщение от searinox (Сообщение 1059121)
Что делает "?rnd=" ?

Он делает запрос уникальным для браузера, заставляя последний запрашивать файл с сервера. Можно убрать этот rnd вовсе, оставив текущее время. Именно оно сделает ваш запрос уникальным, т.к. полученная строка почти никогда не повторится.
Код AS3:

url + "?"+new Date().getTime()


Цитата:

Сообщение от searinox (Сообщение 1059121)
dimarik А можно немного подробнее об этом признаке?

Вместо прямой загрузки swf сначала считываете с серверного скрипта размер этой swf. Затем уже в качестве "rnd" задаете это число

Пример

1) Клиентский скрипт на странице спрашивает size.php (100500 байтов)
2) Клиентский скрипт просит загрузить 'application.swf?100500'

Байты не самый надежный источник уникальности. Можно хеш подсчитывать. Это оч круто будет.

searinox 25.01.2012 23:08

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

Добавлено через 30 секунд
Спасибо всем за ответы, вы очень помогли.

carrotoff 25.01.2012 23:16

Цитата:

new Date().getTime() заставит всегда загружать swf. Мне это очень не нравится. И моим пользователям тоже.
Ну такой вариант может пригодиться исключительно в процессе разработки. У нас, например, при инициализации приложения загружается всегда уникальный xml с настройками, включающий в себя адреса необходимых файлов и их версии. Ну и, соответственно, запрос строится по принципу имя_файла?версия.

dimarik 25.01.2012 23:16

Вероятно, можно просто изменить один из идентификаторов, например, переименовав класс, оставив длину имени точно такой же. Размер прежней и новой флешки совпадет. Оч круто по хешу брать.

Добавлено через 1 минуту
Цитата:

Сообщение от carrotoff (Сообщение 1059128)
Ну такой вариант может пригодиться исключительно в процессе разработки. У нас, например, при инициализации приложения загружается всегда уникальный xml с настройками, включающий в себя адреса необходимых файлов и их версии. Ну и, соответственно, запрос строится по принципу имя_файла?версия.

Недобитый лоадер. Он как у вас обновляется? )


Часовой пояс GMT +4, время: 09:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.