Flex HTTPService, webbläsarens cache och IE

8

Publicerat: 02-08-2008 | Av: tshanky | I: Public Events / Conferences, RIA - Flex / AIR / PDF / Ajax

I morse talade jag vid en Flex händelse i Hyderabad (Indien). Vår (Saven Technologies) gruppmedlemmar 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 evenemang.

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

Problem: Upprepad HTTPService samtal när gjorda av Flex (körs i en instans av IE webbläsare) många gånger slutar med någon extern HTTP samtal. Det verkar uppgifterna serveras från cacheminnet.

Orsak: Flash Player piggybacks på 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 inte återgå 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, must-återge");
header ( "Expires: Mon, 26 Jul 1997 05:00:00 GMT");

I JSP: (innan han skrev till output stream)

response.setHeader ( "Cache-Control", "no-cache");
response.setDateHeader ( "Expires", 0);

Klientsidan lösning: (1) Göra 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öra 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 tidsstämpel är ett bra val.
Följande exempelkod kan göra jobbet:

Var timeStampForNocache: Date = 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.

That's it! Hoppas det hjälper och IE inte besvärar dig när du använder HTTPService längre.

Kommentarer

Hej,

Vi kom precis på en allvarlig fråga i går, där vi använder HTTPService göra xmlrpc. Vi gör det via inlägg med as3rpclib (på Google Code) och fann att om vi försöker göra 2 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 ger båda 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 allt arbete runt omkring i detta fall?

Thanks and Regards
Mark

tack själv en lott ¡¡¡¡
Jag hade tillbringat mycket tid på att söka denna ¡¡¡.
Jag har provat det och det fungerar ¡¡¡
Tack igen.

Hallå
Tack för det här inlägget.
Jag har provat det, och jag arbetat böter
Men idag medan jag testa mina projekt, det cachar igen ..
något annat u föreslå att göra.

Tack på förhand

Tack så mycket för posten. Detta har hjälpt mig några timmar atleast.

Tack så mycket för POST

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

Tack!

Skriv en kommentar

FireStats ikon Powered by FireStats