Когда мы отправляем на сервер запрос одной и той же структуры и с одними и теми же параметрами, он кешируется, поэтому когда нам нужно запросить новую порцию данных по этому же url, браузер говорит flash, что эти данные у него уже есть и запроса на сервер не делает. Это относительно распространенная проблема с кешированием в Internet Explorer. У меня она возникла при написании чата, требования к чату были такими, что можно было использовать только flash (только он помогает победить same-origin-policy), нужно было отправлять запросы к домену отличному от текущего. Подробнее о чате напишу как-нибудь в другой раз, про все эти политики безопасности и ограничения, и что предлагает flash для решения этих проблем. Итак, как исправлять ?!

Flash.

Решение в принципе лежит на поверхности, подобным пользуются не только в flash, это распространенный способ избежать кеширования в браузере. Мы просто добавляем уникальный параметр в запрос. В данном примере я использую timestamp через метод класса Date() – date.getTime(), который передаю в качестве параметра key в запросе.


var request:URLRequest = new URLRequest("http://domain.ru/chat_receive.php");
var variables:URLVariables = new URLVariables();
 var date:Date = new Date();
 variables.key = date.getTime();

 request.data = variables;
 request.method = URLRequestMethod.GET;

Важно передавать параметры через URLVariables, первый раз я просто добавил параметры прямо в строку url “http://domain.ru/chat_receive.php”, почему-то IE это не очень понравилось, и он все равно все успешно кешировал.

Back-end.

Теперь делаем фикс на back-end, у меня это PHP, но реализации для других языков отличается не существенно. Зачем мы это делаем ? Способ который помог избежать проблемы, не отключает кеширование, то есть информация все равно попадает в кеш, и теперь ее на порядки больше. Для того чтобы не забивать кеш браузера, мы ставим в заголовок параметр Expires. А также отдаем в заголовке параметры, что кешировать не надо (в отличие от других браузеров ie этого не слушается, для этого мы и передавали уникальный параметр). Вот что у нас получилось:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // disable IE caching
 header("Last-Modified: " . gmdate( "D, d M Y H:i:s") . " GMT");
 header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
 header("Pragma: no-cache"); // HTTP/1.0

Все Internet Explorer побежден.

 

Хотелось бы провести небольшой обзор интересного редактора FlashDevelop. Каждый работавший в Adobe Flash CS с ActionScript обращал внимание на неудобство работы с кодом в этом IDE, а так же отсутствие навигации по файлам проекта, да что там, на отсутствие вообще такого понятия, как проект. Возможно есть такие, кто сейчас скажет: “Серьезный проект, да тебе во Flex”. С одной стороны не могу не согласиться, во Flex работы с проектами на уровне, да и плагин Flex к Eclipse очень хорош. Но работа с Flex, это работа в MXML. А что делать когда нет желания-умения-возможностей. Итак, если все выше написанное вам близко, вам под кат. Читать далее…

 

В очередной раз удивившись, поисковому запросу к моему блогу (“flex класс md5″). Решил помочь ищющим. Хотя тут сразу надо оговорится, что класс для flash, так же применим и для flex. Соответственно он будет обычным, написанным на ActionScript 3 классом. Скачать его можно тут. Как подключать класс писать не буду, думаю вам это известно.
Как всегда отвечаю на вопросы в комментариях.

 

Закончилась первая неделя моего изучения ActionScript3. Не знаю насколько быстро или медленно это (изучение) идет, сравнивать не с чем и не с кем. Стараюсь все свободное от работы время проводить за Flash, но множество отвлечений мешает. Подводить итоги первой недели наверное не буду, если вам интересно то все этапы здесь, а так продолжаем работать дальше, надеюсь нашу идею приложения для контакта, не реализуют раньше нас, посему поторопимся, поменьше разговоров :)

Итак, вторая неделя изучения ActionScript3. Читать далее…

 

Предыстория.
Появилась острая необходимость в ускоренных темпах обучится ActionScript3, в качестве тестового задания решили c дизайнером написать простенькое, но полезное приложение для vkontakte.ru.

Далее вы сможете узнать, как все это происходило… Читать далее…