Avatar billede goodpeace Nybegynder
17. december 2001 - 17:49 Der er 7 kommentarer og
1 løsning

refresh af fil fra server og ikke fra cache

Jeg har en fil, status.html, som hentes ind i en frame på en side.

Derudover har jeg to filer, status_ok.html og status_ikke_ok.html.

Via et eksternt program kører jeg en simpel dos-copy, som kopierer en af disse to filer over til den status.html, som vises i framen på siden. (copy status_ok.html status.html)

Der er inkluderet denne linie i begge status-filer:
<meta http-equiv=\"refresh\" content=\"1\">

- således at den skulle refreshe en gang i sekundet.

Nu er problemet bare, at når man kopierer en fil med copy i dos, så kopierer man også timestamp fra den gamle fil med over til kopien.
Det betyder så at jeg kan have følgende filer:
status_ok.html      17-12-01 16.32
status_ikke_ok.html  17-12-01 16.40

og så kan jeg kopiere den nyeste:
status.html          17-12-01-16.40

så kan jeg kigge på denne fil i min browser, og det går fint.

Så kan jeg kopiere den ældste fil og få:
status.html      17-12-01 16.32

og når jeg så kigger på min side, så viser den  stadig den anden fil fra cachen.

Hvis jeg går ind i options og tømmer cachen i min browser, så viser den den rigtige side (den ældste), indtil jeg har været forbi den nyeste igen.

Nogen ideer til løsninger?
Avatar billede goodpeace Nybegynder
17. december 2001 - 17:51 #1
oops, den burde måske ikke ligge i javascript, da jeg jo ikke rigtig bruger java-script...

Nå, men jeg har prøvet at bruge et onload kald med noget javascript, som opdaterer siden - og der henter den også filen fra cachen.

:-)
Avatar billede nikolajdu Nybegynder
18. december 2001 - 08:09 #2
Den her refresher 1 gang i sekundet og loader fra serveren. Dog synes jeg 1 sekunder lige lovligt kort tid afhængigt af Inet forbindelse og serverens hastighed :))

<script>

setTimeout(\'self.location.reload(true)\',1000)

</script>

/Nikolaj
Avatar billede nikolajdu Nybegynder
18. december 2001 - 08:10 #3
Hemmeligheden er:

reload(true) // Henter fra server
reload(false) // Henter i cachen

/Nikolaj

Avatar billede goodpeace Nybegynder
18. december 2001 - 09:38 #4
Tak for tippet -
Avatar billede nikolajdu Nybegynder
18. december 2001 - 09:41 #5
fino fino :))
Avatar billede goodpeace Nybegynder
18. december 2001 - 09:42 #6
det skulle lige kombineres med lidt ekstra scripts, men det var det som slog hovedet på sømmet.

Nu er det kun internt i huset, at brugere skal se disse sider, så 1 sek er ellers helt ok.

Men jeg kombinerede det med et script, som jeg fandt andetssteds på nettet:

I parent-sidens head:
<script language=\"JavaScript\"><!--
var reloaded = false;

function reloadOnceOnly() {
    if (!reloaded) {
        reloaded = true;
        parent.oms.location.reload(true);
    }
}
//--></script>


og i den frame som hedder oms:

<body onLoad=\"parent.reloadOnceOnly()\">

- så henter den kun filen en enkelt gang - ved åbningen af frame-sættet, og altid fra serveren takket være din reload(true).

Det andet tip fandt jeg på:
http://developer.irt.org/script/973.htm


tak!
Claus
Avatar billede nikolajdu Nybegynder
18. december 2001 - 09:44 #7
Oki doki, men nu var der jo ikke så meget forklaring med :))

Fint du har fået det til at virke :)

/Nikolaj
Avatar billede goodpeace Nybegynder
18. december 2001 - 10:00 #8
det var heller ikke forklaring jeg skulle bruge - bare lidt konkret viden om problemet.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester