28. februar 2006 - 11:28Der er
14 kommentarer og 1 løsning
Cache problem med javascript i IE
Er der nogen som ved hvad man skal skrive for at et .js script ikke bliver cachet i IE.
Jeg har en editor, innovaeditor (tidligere YUSASP editor), hvor det er muligt at inkl. en css fil, denne css fil kan man redigere på en anden side. Problemet ligger i at den ikke bliver opdateret i editoren, fordi editor.js bliver cachet.
Jeg bruger allerede nedenstående php script til at afbryde caching af siderne, hvilket virker fint i Firefox, men i IE cacher den alligevel alle .js og .css filer samt alle billeder til editor.js filen.
<?php // Date in the past header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
Det har jeg prøvet men det virker ikke. Grunden til det er at jeg i min index.php fil har et link til innovaeditor.js, dette script finder ud af hvilket sprog man bruger. Det bliver så inkluderet i editor.js filen, dvs. at hvis jeg giver den en unik query streng, kommer næste redirect til at se ud som følgende:
script/?123456editor.js
og resultatet er det samme hvis jeg gør det i innovaeditor.js filen:
Jeg tror den tag query strengen og sætter den ind i url'en, for at finde ud af hvilken mappe den skal bruge, derfor er det ikke muligt at bruge en unik parameter.
dette er hvad der står i innovaeditor.js:
var oScripts=document.getElementsByTagName("script"); var sEditorPath; for(var i=0;i<oScripts.length;i++) { var sSrc=oScripts[i].src.toLowerCase(); if(sSrc.indexOf("scripts/innovaeditor.js")!=-1) sEditorPath=oScripts[i].src.replace(/innovaeditor.js/,""); }
det virker også på editor_lang.js filen, den bliver gemt som en ny fil hver gang man reloader siden, men det er editor.js filen som jeg har brug for at reloade, da det er der css filen bliver cachet.
Måske kunne en løsning være ikke at cache css filen, men det ved jeg heller ikke hvordan man gør. Ingen af filerne bliver cachet i Firefox, det er kun IE som er problemet.
Så sætter du en tilsvarende konstruktion på de andre steder. Og det er ikke IE som sådan, men en indstilling i IE, der vil cache mere end nødvendigt. Den eneste sikre måde, er at lave en ny URL hver gang, med noget efter en "?" i URL-en.
Har løst problemet med en midlertidig løsning, ved at lave .css filen om til en .php fil og give den et unikt id nr. derved bliver den hentet ind som en ny fil hver gang editoren loades. Da php filen kun bruges i backenden og der også bliver genereret en css fil til frontenden, kommer det ikke til at påvirke frontenden, men det er stadig irriterende at jeg ikke kan løse det på en bedre måde.
Nu mangler jeg bare at finde ud af hvordan man lukker denne streng og giver dig dine point, he he, altid et nyt problem med en ny løsning.
Jeg samler ikke på point, tak. Men det der med PHP filen og unikt id kan du bare gøre med css filen - der er ingen grund til at det nødvendigvis skal være php.
Det har du ret i, jeg havde prøvet det i css editoren og der virkede det ikke, samt i editoren, men det var bare fordi jeg ikke tænkte mig om, glemte at sætte php variablen til global, tak. Nogen gange er ting så simple men man gør dem selv mere besværlige end de er.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.