Avatar billede jakse79 Nybegynder
22. juni 2006 - 10:27 Der er 4 kommentarer og
1 løsning

Problemer med visning/opdatering i iframe efter CMS ændring

Hej

Jeg oplever en del problemer når jeg skal have vist de ændringer jeg har fortaget ved hjælp af et CMS modul som ændrer data i SQL-Databasen.

Problemet opstår når jeg skal have vist disse ændringer i Iframes. Jeg kan fremprovokere ændringerne ved at højreklikke med musen i IFRAME feltet og trykke refresh. Herefter viser den det ønskede, men jeg er nødsaget til at trykke refresh i feltet. F5 virker ikke idet den ikke opdaterer IFRAME.

IFRAME'en er defineret forneden:

<IFRAME SRC="newsticker_test.asp" name="newsFrame" width="200" height="500" vspace="0" hspace="0" valign="top" SCROLLING=no FRAMEBORDER=0 ID=IFrame1 allowtransparency="true"></IFRAME>

newsticker.asp indeholder forbindelese til databasen:

Server.CreateObject("ADODB.Connection")
Server.CreateObject("ADODB.Recordset")

Problemet er herefter blot at visningen er forældet. Jeg er ikke klar over om det er fordi dataene bliver cachet og man derfor skal fremprovokere en refresh/opdatering, eller om den ikke fortager kald til databasen hvis den kan finde disse i cache.

Hvordan kan jeg fremprovokere sådan en Refresh i IFRAME feltet?
Avatar billede fennec Nybegynder
22. juni 2006 - 10:35 #1
For det første skal du have denne kode i toppen af alle dine ASP filer, så serveren ikke casher data:
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

Dernæst kan jeg så fortælle at F5 knappen refresher hele browseren, og derfor ikke kun iFramen. Hvis du nu havde flere IFrames på siden hvordan skulle den så kunne vide at det kun er den ene den skal opdatere, når du trykker F5??

Du kan lave en knap som reloader Iframen:
<input type="Button" value="Klik" onClick="dinIframe.location.reload();return false;">
Avatar billede jakse79 Nybegynder
22. juni 2006 - 10:43 #2
Det virker bare. Jeg havde på fornemmelsen, at det var meget simpelt. Jeg kunne bare ikke finde det. Jeg siger mange tak.

Blot til info. Hvad gør de tre Response metoder? Husk at sende det som svar.
Avatar billede fennec Nybegynder
22. juni 2006 - 11:01 #3
De fortæller serveren og browseren at de ikke skal cashe (huske) siden. Hvis du ikke angiver dette, gemmer serveren resultatet første gang den behandler siden, og bruger så dette resultat fremover så den ikke skal behandle siden igen (spare recourser og øger hastighed). Den laver dog noget tjek en gang imellem, for at finde ud af om der er sket ændringer, så den får en ny cashe, men det kan godt tage et par min, inden den opdager det, hvilket vi ikke kan vente på når vi udvikler. Du kan derfor godt fjerne linjerne igen, når du er færdig med siderne, så du øger hastigheden, men jeg beholder dem altid. Du skal have rigtig mange hits inden serveren ikke kan følge med, også er jeg sikker på at brugerne altid ser den seneste/rigtige udgave af siderne.

.o) <-- One Eyed Jack
Avatar billede fennec Nybegynder
22. juni 2006 - 11:09 #4
... Browserne husker desuden også siderne. Det fik jeg vist ikke helt klar gjort, men det fortæller koden også til browseren at den ikke skal gøre.
Avatar billede jakse79 Nybegynder
22. juni 2006 - 13:31 #5
Igen, tak for den hurtige besvarelse.
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
Kurser inden for grundlæggende programmering

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