Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как запретить подгружать флэшку из кеша? (http://www.flasher.ru/forum/showthread.php?t=141439)

bsbflasher 25.06.2010 01:24

Как запретить подгружать флэшку из кеша?
 
Проблема такая: имеем веб-сайт, где в штмл-страницу вставлен swf элемент. Некоторые браузеры, например Google Chrome, постоянно берут swf файл из памяти, в то время как я обновляю раздел новостей в этом самом swf элементе. Нужно запретить сохранение в кеш-память. Как быть?

rainbowrussia 25.06.2010 02:13

Добавлять к имени флешки что-то случайное, например (javascript)
Код:

var swf = "/news.swf?rnd=" + Math.random();

deman455 25.06.2010 02:31

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

rainbowrussia 25.06.2010 03:52

Приведите ваш html код, я его помогу модифицировать.

bsbflasher 25.06.2010 04:38

прошу прощения за глупый вопрос, но куда вставлять сей код:
Цитата:

var swf = "/news.swf?rnd=" + Math.random();
(сам только начинаю копаться во флеше...)

udaaff 25.06.2010 09:03

bsbflasher, в адресе запроса должен быть уникальный параметр. А куда вставлять — вам виднее.

rainbowrussia 25.06.2010 15:38

Цитата:

Сообщение от bsbflasher (Сообщение 917970)
прошу прощения за глупый вопрос, но куда вставлять сей код

Приведите ваш код вставки ролика, подскажу куда.

Котяра 25.06.2010 16:37

Я делал немного хитрее - может кому пригодится.
У меня был bin каталог лежащий в svn. На сервере был скрипт-апдейтер ( запускается либо по крону на тестсервере, либо вручную на релизе) который по запуску тянул из svn последнюю ревизию и генерил xml вида:

Цитата:

<files last_version="121212">
<file url ="/data/mainmenu.sfw" version = "121211"/>
<file url ="/data/items/1.sfw" version = "1234"/>
...
</files>
, где version - номер релиза
загрузчик ресурсов тянул эту xml с рандомным кэш-коэффициентом (так я называю строку добавляемую к имени файла file.swf?кэш_коэффициент)
Затем любая загрузка была через этот лоадер.
например
Код AS1/AS2:

ResourceManager.load("/data/items/1.sfw");
на самом деле вызывет
/data/items/1.sfw?1234


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

bsbflasher 26.06.2010 01:54

А если так:
swf запоминается пока пользователь находится в браузере. После того как он закрывает браузер и заходит на сайт опять - swf-ка грузится заново (не из кеша).
такой вариант возможен теоретически?

mooncar 26.06.2010 02:55

Цитата:

Сообщение от bsbflasher (Сообщение 918169)
swf запоминается пока пользователь находится в браузере. После того как он закрывает браузер и заходит на сайт опять - swf-ка грузится заново (не из кеша).
такой вариант возможен теоретически?

Да и практически, я полагаю, возможен.

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

1. php-скрипт генерирует случайный параметр (число) один раз. Он записывает его в переменную сессии сразу же после session_start() и более этого не делает (на всех страницах с флешками нужно условие, при котором произойдет первая и единственная рандомная генерация. Если при заходе на какую-то страницу сайта окажется, что эта переменная-параметр уже уставлена, то естественно, генерация не происходит).

2. Пользователь серфит сайт. И при открытии любой страницы с сайта скрипты будут добавлять этот параметр постоянно к url-у данной (и любой другой) флешки при ее публикации на странице. Публиковать можно, конечно, с помощью SWFObject.

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

3. Далее. Пользователь закрыл браузер, сессия кончилась, все переменные сессии, включая этот случайный (но постоянный на период сессии!) параметр очистились.

4. В следующий раз, после того как браузер откроется заново, и если вы к тому моменту положили на хост новую версию, перемнная сессии будет рандомно новая (см. п.1) и первый раз браузер заберет ее гарантированно с хоста, а не из кэша.

(Правда тут еще есть хитрый кэш провайдера, но это отдельный разговор).


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

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