Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Sep 2003

refresh page med javascript

Hej!

Jag har byggt en extension till google chrome som en gång i minuten läser en xml-fil ifrån mitt forum, i filen står information om man har något oläst inlägg eller inte. Jag trodde att mitt program var fulländat men har nu upptäckt att det kan dröja upp mot 20-30 minuter efter ett inlägg har skrivits till att min extension upptäcker det pga att xml-filen med informationen lagras i cacheminnet och därmed visar gammal information.

Hur gör man för att ett javascript ska uppdatera xml-filen innan den läser texten? Eller kanske finns en annan lösning tex att inte tillåta filen att lagras i cacheminnet?

/André

EDIT: Jag använder mig av funktionen XMLHttpRequest på detta vis, lite förkortat

var req = new XMLHttpRequest();
req.open("URL", false);

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2005

En "ful" och rätt enkel lösning är att slänga på lite slaskdata på urlen du laddar, timestamp brukar ofta funka bra:

var url = "http://dinurl.se/data.xml?slask="+ new Date().getTime();

Hur kompatibiliteten för Date-objektet är vet jag dock inte, men värt att testa.

Trädvy Permalänk
Testpilot
Plats
Norrköping
Registrerad
Sep 2002

Den "korrekta" lösningen vore väl att tala om för webbläsaren att filen inte ska cachas, görs genom att sätta rätt headers på valfritt sätt för din XML-fil.

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

Det kräver ju dock att du har tillgång till att ändra på filen som ska hämtas men eftersom det var ditt forum antog jag att du hade det. Annars är det enklast att göra som Wishie föreslog, alternativt att använda Math.random() istället för datum men det blir ju ingen skillnad.

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 8GB][Gigabyte GeForce GTX 970 G1 Gaming]

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Sep 2003

Tack för svar båda två, jag körde på hundens lösning och bytte ut xml mot php så nu funkar det utmärkt