Просмотр полной версии : Проблема с кешем в IE8
Пользуюсь в AS3 запросами на сервер через URLRequest. В семерке при автоматическом обновлении страниц (в настройках браузера) каждый раз приходит ответ с сервера. В IE8 при автоматическом обновлении (настройка по умолчанию в браузере) флеха или браузер по ходу кеширует даже запрос через URLRequest (POST и GET). Как это отменить. Данные поступают из пхп скрипта, в формате VARIABLES, кэш не позволяет даже обратится к скрипту из флешки. Только принудительной чистки из браузера
обращайтесь к http://kyda.vi/obrashalis/script.php?random=1824129841
1824129841 - случайное число.
случайное число имеет теоретичскую возможность повториться :)
Красивее использовать время.
теория с практикой несовместимы в данном случае.
ради этого создавать кучу Date...
ради этого создавать кучу Date...
Достаточно одного. Я бы предпочел (и предпочитаю) именно его. Если я знаю, что никогда не повторится, мне меньше геморроя в случае чего.
TERRORist
23.02.2010, 21:19
Достаточно одного. Я бы предпочел (и предпочитаю) именно его. Если я знаю, что никогда не повторится, мне меньше геморроя в случае чего.
А я бы предпочел запретить кеширование в заголовке URLRrequest и не срать людям в кеш
В Аванте при загрузке xml файла делаю так
var request:URLRequest = new URLRequest("file.xml?rand="+date.getDate());
Все браузеры въезжают, что от них просят, а этот все равно из кеша тянет (((
Генерить имя файла в зависимости от даты? :) А вообще, в теории, нужно чтобы сервер еще вместе с XML посылал правильные заголовки, типа expires, cache-control и все такое... не то, что бы все браузеры обращали на это внимание... Может еще content-type поможет, IE как правило не любит application/xml и может подумает, что это не надо кешировать... Еще есть вариант - MSDN почитать, может у IE есть какие-нибудь альтернативные заголовки, которые он понимает...
wvxvw, конкретно как мне выслать заголовок с xml файлом? Приблизительный код
var loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
var request:URLRequest = new URLRequest("file.xml?rand="+new Date().getDate());
var rh:Array = new Array(new URLRequestHeader("Content-Type", "application/xml"), new URLRequestHeader("pragma", "no-cache"), new URLRequestHeader("my_header", String(new Date().getDate()))); // свой собственный параметр
request.requestHeaders = rh;
request.method = URLRequestMethod.POST;
loader.load(request);
При открытии нового окна Аванта идет обращение к file.xml, после обновления страницы файл file.xml можно смело удалять с сервера, он больше не понадобится. Кеш работает )) и так пока страницу не откроешь в новом окне.
Эрм... не в запросе, а в ответе заголовок нужен. В запросе там уже ничего не поможет - только пытаться обмануть и попросить "не тот" файл. Заголовки, ну, чесно говоря, я не знаю, как тот же апач настроить, чтобы определенному формату соответствовали какие-то специфические заголовки, но можно сделать с помощью PHP,
<?php
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-type: application/xml');
?>
<some-xml/>
Не, не помогает. В IE7-, FF, Chrome, Opera работает (и без этих уловок), в Avant и IE8 ничего не помогает. Может это заговор? :D
PS wvxvw, немного поменял твой пример, сделал с таким извратом. Создал параллельно xml файлу, файл php, в нем уже создал заголовки как ты написал, после вывел содержимое xml файла таким макаром:
<?php
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-type: application/xml');
$filename = "file.xml";
$f = fopen($filename, "r");
while (!feof($f)){
echo fgets($f);
}
fclose($f);
?>
После этого IE8 допер, что от него нужно. Вот такой изврат. Спасибо за подсказку, с меня пиво.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.