2009-07-01 3 views
0

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

Я попытался установить заголовки с помощью панели управления IIS использовать следующее, без везения:

CacheControl: no-cache 
Pragma: no-cache 

Я также попытался добавить параметр GET случайной HTTP в конец запроса URL , но это похоже на то, что он отделяется классом HttpService до того, как будет выполнен запрос. Вот код для его реализации:

http.url = "test.xml?time=" + new Date().getMilliseconds(); 

А вот журнал отладки, который заставляет меня думать, что это не удалось:

(mx.messaging.messages::HTTPRequestMessage)#0 
    body = (Object)#1 
    clientId = (null) 
    contentType = "application/x-www-form-urlencoded" 
    destination = "DefaultHTTP" 
    headers = (Object)#2 
    httpHeaders = (Object)#3 
    messageId = "AAB04A17-8CB3-4175-7976-36C347B558BE" 
    method = "GET" 
    recordHeaders = false 
    timestamp = 0 
    timeToLive = 0 
    url = "test.xml" 

Кто-нибудь занимался этой проблемой?

ответ

2

HTTP-заголовок управления кешем «Cache-Control» ... обратите внимание на дефис! Это должно сделать трюк. Если вы опустите дефис, он вряд ли сработает.

0

Я использовал getTime(), чтобы сделать дату в числовой строке, которая сделала трюк. Я также изменил GET на POST. Были некоторые проблемы с разными расширениями файлов, которые кэшируются по-разному. Например, стандартный динамический расширение как .php или .jsp не может быть кэшируются браузером и

private var myDate:Date = new Date(); 
[Bindable] 
private var fileURLString:String = "http://www.mysite.com/data.txt?" + myDate.getTime(); 

Надеюсь, это поможет кому-то.

Я также выбрасывал тонны параметров заголовка, но они никогда полностью не делали трюк. Примеры:

// HTTPService called service 
service.headers["Pragma"] = "no-cache"; // no caching of the file 
service.headers["Cache-Control"] = "no-cache";