PDA

Просмотр полной версии : Запретить кэширование


Nweb
20.03.2012, 21:31
Никак не получается запретить кэширование флеш(флеш при каждой загрузке разный, хотя имя файла swf одно и то же). Подскажите пожалуйста как это можно сделать?

mooncar
20.03.2012, 21:46
На будущее - тему нужно называть более информативно, иначе она будет закрыта.

По существу:
Все зависит от ваших целей - если вам как разработчику неудобно, то для начала можно отключить кэширование в браузере.

Nweb
20.03.2012, 21:49
У меня сайт, нужно отключить кэширование для всех пользователей, а не лично у меня в браузере.

Это не помогло никак:
<meta http-equiv="Cache-Control" content="no-cache" />

всё равно флеш обновляется где-то раз в час

mooncar
20.03.2012, 21:58
флеш при каждой загрузке разный, хотя имя файла swf одно и то же
SWF генерируется на сервере?!

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

Попробуйте так в коде вставки, везде, где указано имя ролика:
movie.swf?<?php echo rand() ?>

Если скриптовый процессор не PHP, то используйте аналогичную рандомную добавку.

dark256
21.03.2012, 11:23
флеш при каждой загрузке разный, хотя имя файла swf одно и то же

Кэш браузера обычно слабо ориентируется именно на имя файла. Его задача именно обновлять файлы с одинаковыми именами при измении их контента...

Nweb
21.03.2012, 14:51
Спасибо за помощь, но пробую -не помогает - хотя теперь к коде видно что функция рэнд срабатывает, вот код в браузере гугл:

<div class="main"><object type="application/x-shockwave-flash" id="Browser" data="Brow.swf?974279516)" width="2000px" height="1000px"><param name="menu" value="false"><param name="scale" value="noScale"><param name="allowFullscreen" value="true"><param name="allowScriptAccess" value="always"><param name="bgcolor" value=""><param name="wmode" value="transparent"></object></div>

Может я что-то неправильно делаю?

mooncar
21.03.2012, 15:00
Brow.swf?974279516)
Скобочка лишняя. Ну вообще-то не повлияет наверное.

Не силен в серверных делах, но может быть немного усложнить URL с указанием имени переменной:
Brow.swf?rnd=<?php echo rand() ?>

Вот здесь (http://webo.in/articles/all/http-caching/) еще почитайте.
+ к метатегу Cache-Control на странице еще директиву в .htaccess на сервере прописать стоит.

Nweb
21.03.2012, 15:45
Какие имнно директивы, пробую так(это всё содержимое файла .htaccess):
ExpiresActive on
# ExpiresDefault A 1

По идее он должен обновляться раз в секунду - это лучше чем раз в час как сейчас - не обновляется

mooncar
21.03.2012, 16:10
К сожалению, по материалу тому точно не могу сказать, задачи такой не возникало. Просто привел еще один способ, поскольку полагал, что серверные директивы также можно задействовать для решения.

PS. Избегайте избыточного цитирования, не захламляйте сообщения полнотекстовыми цитатами, ведь пока логика ответов понятна и без этого.

alatar
21.03.2012, 16:26
Для управления кэшем браузера есть соответствующие HTTP-заголовки (http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%BE%D0%B2_HTTP). Что в html имитируется тегом meta. Вам необходимо отправить заголовок Cache-Control в ответе на запрос вашего swf.

Nweb
21.03.2012, 16:47
В итоге всё получилось, спасибо за помощь!!!!