Flex HTTPService, webbläsarens cache och IE

11

Postat den: 2008/02/08 | Av: tshanky | I: Offentlig Evenemang / Konferenser , RIA - Flex / AIR / PDF / Ajax

I morse talade jag vid en Flex händelse i Hyderabad (Indien). Vår (Savén Technologies) medarbetare i Hyderabad planerat och organiserat denna fantastiska händelse. Det var en offentlig händelse. Över 200 enthusiatic personer deltog i evenemanget.

Jag uppskattar verkligen att insatser av organisatörerna och tacka deltagarna för att göra det ett lyckat arrangemang.

En av deltagarna frågade mig en fråga om problem med Flex HTTPService och IE webbläsarens cache. Jag lovade att ge en detaljerad lösning på problemet, så här är det:

Problem: Upprepade HTTPService samtal när gjorda av Flex (visas inom en instans av IE webbläsare) många gånger slutar med någon extern HTTP samtal. Det verkar de uppgifter som serveras från cacheminnet.

Motivering: Flash Player piggybacks om webbläsaren för att göra HTTP-samtal. IE cachar svar från HTTP GET-samtal och om förekomsten av samma webbadress returnerar svaret från cacheminnet.

Lösning: Problemet kan lösas antingen på serversidan eller på klientsidan.

Serversidan lösning: Ställ in HTTP-rubriker av svaret att undvika återvänder svar från cacheminnet.

I HTML: (i rubriken)

<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="expires" CONTENT="0">

I PHP: (i manus)

header ("Cache-Control: no-cache, måste-återge");
header ("Utgår: Mon, 26 Jul 1997 05:00:00 GMT");

I JSP: (före skriftligen till produktion ström)

response.setHeader ("Cache-Control", "no-cache");
response.setDateHeader ("försvinner", 0);

Klientsidan lösning: (1) Gör HTTP POST samtal - endast HTTP GET-samtal serveras från cacheminnet eller (2) Se till att HTTP GET-adressen är olika varje gång.

(1) Gör HTTP POST samtal -
som metod = "POST" och hantera samtalet på lämpligt

(2) Bifoga en unik parameter till HTTP GET-samtal så att adressen är olika varje gång. En unik tid stämpel är ett bra val.
Följande exempelkod kan göra jobbet:

var timeStampForNocache: Datum = new Date ();
params.noCacheControlVar = timeStampForNocache.getTime (). toString ();
Jag har nämnt parametern "noCacheControlVar". Du kan kalla den något annat du vill. Namnet spelar ingen roll. Det viktiga är att tidsstämpel gör HTTP GET-URL unik.

Det är allt! Hoppas det hjälper och IE inte besvärar dig när du använder HTTPService längre.

Kommentarer

Hej,

Vi kom precis över ett allvarligt problem i går, där vi använder HTTPService att göra xmlrpc. Vi gör det via inlägg med hjälp av as3rpclib (på Google Code) och konstaterade att om vi försöker göra två ansökningar i snabb följd första verk och den andra returnerar ett fel. Använda Fiddler2 jag kan se den andra och första önskemål och båda är faktiskt tjänster, och både återvändande rätt resultat från servern.

När debugging jag ser resultatet från den andra ansökningsomgången för att utlösa en # 2032: Stream Error.

Har du en idé om något arbete arounds i detta fall?

Tack och hälsningar
Mark

Tack så mycket ¡¡¡¡
Jag hade tillbringat mycket tid på att söka detta ¡¡¡.
Jag har provat det och det fungerar ¡¡¡
Tack igen.

Hej
Tack för denna post.
Jag har försökt det, och jag fungerade bra
Men i dag medan jag testa mitt projekt, det cachar igen ..
något annat u föreslå att göra.

Tack på förhand

Tack så mycket för tjänsten. Detta har hjälpt mig några timmar iallafall.

Tack så mycket för POST

Tack så mycket, det här fixar just mitt problem!

Tack!

Tack så mycket .. :)

Byta kommer till tjänster är inte en godtagbar lösning. De är inte lika ...

Din serversidan lösning inte lösa problemet. Här är en mycket bättre lösning
http://faindu.wordpress.com/2008/04/18/ie7-ssl-xml-flex-error-2032-stream-error/

Skriv en kommentar

FireStats ikon Powered by FireStats