Flex HTTPService, browser cache en IE

11

Geplaatst op: 02-08-2008 | Door: tshanky | In: Publieke evenementen / conferenties , RIA - Flex / AIR / PDF / Ajax

Vanochtend sprak ik op een Flex evenement in Hyderabad (India). Onze (Saven Technologies) teamleden in Hyderabad gepland en georganiseerd dit fantastische evenement. Het was een publiek evenement. Meer dan 200 enthousiast mensen bezochten het evenement.

Ik ben oprecht waardering voor de inzet van de organisatoren en dank de aanwezigen voor het maken van het een geslaagd evenement.

Een van de aanwezigen vroeg me een vraag over problemen met Flex HTTPService en de IE browser cache. Ik had beloofd om een gedetailleerde oplossing bieden voor het probleem, dus hier is het:

Probleem: Herhaalde oproepen wanneer HTTPService gemaakt van Flex (uitgevoerd binnen een geval van de IE browser) vele malen eindigt met geen externe HTTP-oproep. Het lijkt de data wordt geserveerd uit de cache.

Reden: De Flash Player vervoert per kangoeroewagen op de browser om te bellen het HTTP. IE slaat de reactie van de HTTP GET-gesprekken en over het vóórkomen van dezelfde URL geeft de reactie van de cache.

Oplossing: Het probleem kan worden opgelost, hetzij op de server of op de client.

Server-side oplossing: Stel de HTTP-headers van de reactie om te voorkomen dat terugkerende reactie van cache.

In HTML: (in de header)

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

In PHP: (in het script)

header ("Cache-Control: no-cache, must-geldigmaking");
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

In JSP: (voor het schrijven naar de output stream)

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

Client side oplossing: (1) Zorg HTTP POST bellen - alleen HTTP GET-gesprekken worden geserveerd uit de cache of (2) Zorg ervoor dat de HTTP GET URL is telkens anders.

(1) Zorg HTTP POST-oproep -
set method = "POST" en op gepaste wijze omgaan met de oproep

(2) Voeg een unieke parameter voor de HTTP GET bellen, zodat de URL is telkens anders. Een unieke tijdstempel is een goede keuze.
De volgende voorbeeldcode, kan het werk doen:

var timeStampForNocache: Date = new Date ();
params.noCacheControlVar timeStampForNocache.getTime = (). toString ();
Ik heb de naam van de parameter "noCacheControlVar". U kunt de naam ook maar iets wat je wilt. De naam doet er niet toe. Waar het om gaat is dat de timestamp maakt de HTTP GET URL uniek.

Dat is het! Hoop dat het helpt en IE niet u problemen bij het gebruik van meer HTTPService.

FireStats pictogram Powered by FireStats