/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Gennemtvinge "refresh" af side, når den he~
Fra : Torben Philippsen


Dato : 05-12-02 08:54

Hej nyhedsgruppe!

Jeg har en asp-side, hvor jeg gerne vil sikre mig, at det er den nyeste
version af siden, som bliver præsenteret for brugeren uanset dennes
browserindstillinger.

Kan jeg kode mig ud af det i asp ligesom jeg kan i jsp og i givet fald,
hvordan?

På forhånd mange tak for hjælpen.
M.v.h.
Torben Philippsen



 
 
Kasper Katzmann (05-12-2002)
Kommentar
Fra : Kasper Katzmann


Dato : 05-12-02 10:31

> Jeg har en asp-side, hvor jeg gerne vil sikre mig, at det er den nyeste
> version af siden, som bliver præsenteret for brugeren uanset dennes
> browserindstillinger.
>
> Kan jeg kode mig ud af det i asp ligesom jeg kan i jsp og i givet fald,
> hvordan?

Du kan gøre det i ren HTML med følgende i din <HEAD> blok:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store">


/Kasper K



Chrisser (05-12-2002)
Kommentar
Fra : Chrisser


Dato : 05-12-02 10:34

"Kasper Katzmann" <kasper@FJERNESkatzmann.dk> skrev i en meddelelse
news:asn6ci$dde$1@news.net.uni-c.dk...
> > Kan jeg kode mig ud af det i asp ligesom jeg kan i jsp og i givet fald,
> > hvordan?
>
> Du kan gøre det i ren HTML med følgende i din <HEAD> blok:
>
> <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
> <META HTTP-EQUIV="Cache-Control" CONTENT="no-store">
>

- eller i ASP med:
Response.Expires = "antal minutter" ( gerne -1, eller mere ) i toppen af
dine sider


Chrisser



Jesper Stocholm (05-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 05-12-02 13:10

Chrisser wrote :

> "Kasper Katzmann" <kasper@FJERNESkatzmann.dk> skrev i en meddelelse
> news:asn6ci$dde$1@news.net.uni-c.dk...
>> > Kan jeg kode mig ud af det i asp ligesom jeg kan i jsp og i givet
>> > fald, hvordan?

> - eller i ASP med:
> Response.Expires = "antal minutter" ( gerne -1, eller mere ) i toppen
> af dine sider

men så gemmes siden på på klienten ... hvilket vel ikke er meningen. Du
kan jo (sagtens) få browserne til ikke at gemme den på klienten ved at
skrive

Response.CacheControl = "no-cache"
Response.AddHeader "pragma","no-cache"

Så gemmes siden slet ikke på klienten. Tilføjelse af en expires-header
har iflg mine (sporadiske) tests ikke indflydelse på de headers, der
bliver sat.



--
Jesper Stocholm - http://stocholm.dk
Ny FAQ for dk.edb.internet.webdesign.serverside.asp : http://asp-faq.dk
Svar til gruppen og ikke til mig privat !

Chrisser (05-12-2002)
Kommentar
Fra : Chrisser


Dato : 05-12-02 13:11

"Jesper Stocholm" <jespers@stocholm.invalid> skrev i en meddelelse
news:Xns92DB85DE27D7Cspamstocholmdk@130.226.1.34...
>
> men så gemmes siden på på klienten ... hvilket vel ikke er meningen. Du
> kan jo (sagtens) få browserne til ikke at gemme den på klienten ved at
> skrive

Hmmm, det var jeg faktisk ikke klar over, så er dine to nedenstående klart
at foretrække


> Response.CacheControl = "no-cache"
> Response.AddHeader "pragma","no-cache"
>
> Så gemmes siden slet ikke på klienten. Tilføjelse af en expires-header
> har iflg mine (sporadiske) tests ikke indflydelse på de headers, der
> bliver sat.
>
Den fik jeg til gengæld ikke fat i ?


Chrisser



Jesper Stocholm (05-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 05-12-02 13:22

Chrisser wrote :

> "Jesper Stocholm" <jespers@stocholm.invalid> skrev i en meddelelse
> news:Xns92DB85DE27D7Cspamstocholmdk@130.226.1.34...
>>
>> men så gemmes siden på på klienten ... hvilket vel ikke er meningen.
>> Du kan jo (sagtens) få browserne til ikke at gemme den på klienten
>> ved at skrive
>
> Hmmm, det var jeg faktisk ikke klar over, så er dine to nedenstående
> klart at foretrække
>
>> Response.CacheControl = "no-cache"
>> Response.AddHeader "pragma","no-cache"
>>
>> Så gemmes siden slet ikke på klienten. Tilføjelse af en
>> expires-header har iflg mine (sporadiske) tests ikke indflydelse på
>> de headers, der bliver sat.
>>
> Den fik jeg til gengæld ikke fat i ?

Hvis man sætter disse cache-control headers jeg nævnte, så kommer der
nogle headerlinier som

CacheControl: no-cache
Pragma: no-cache

Hvis man samtidig bruger

Response.Expires = now - 1000

Så burde man tro, at denne linie sættes sammen med de andre, men det er
ikke tilfældet. Forventet opførsel ville være

CacheControl: no-cache
Pragme: no-cache
Expires: 1990-12-12 23:23:23 (eller hvad det end giver)

Men det sker ikke. Kun de to første sættes, så den sidste linie er
overflødig.

Det skal dog tages med det forbehold, at det er nogle uger siden jeg
sidst sad og legede med det, så min hukommelse kan svigte.



--
Jesper Stocholm - http://stocholm.dk

Vil det sige, at ham Lars er et stort brød på 15 år ?

Chrisser (05-12-2002)
Kommentar
Fra : Chrisser


Dato : 05-12-02 13:30

"Jesper Stocholm" <jespers@stocholm.invalid> skrev i en meddelelse
news:Xns92DB87EF8A4B6spamstocholmdk@130.226.1.34...
[snip]
> Men det sker ikke. Kun de to første sættes, så den sidste linie er
> overflødig.
>
> Det skal dog tages med det forbehold, at det er nogle uger siden jeg
> sidst sad og legede med det, så min hukommelse kan svigte.
>

Jammen det lyder da i hvert fald logisk, den bliver jo overflødig så hvorfor
skulle den så optage plads.


Chrisser



Kasper Katzmann (05-12-2002)
Kommentar
Fra : Kasper Katzmann


Dato : 05-12-02 14:52

> Response.CacheControl = "no-cache"
> Response.AddHeader "pragma","no-cache"

Det er jo fint nok. Men hvorfor skrive i ASP hvad man ligeså godt kan skrive
i HTML??

Er det ikke altid bedre at få klienten til at lave det klienten kan (og i
det her tilfælde gør den det vel under alle omstændigheder) og så få
serveren til at lave alt det andet?
Jeg ved godt det ikke betyder noget rent praktisk i det her tilfælde, men
principielt er det vel sådan man bør tænke??

Nu kender jeg ikke rigtigt AddHeader funktionen så det kan jo være der rent
faktisk er en fornuftig forklaring (det plejer der jo at være )

/Kasper K



Chrisser (05-12-2002)
Kommentar
Fra : Chrisser


Dato : 05-12-02 14:54

"Kasper Katzmann" <kasper@FJERNESkatzmann.dk> skrev i en meddelelse
news:asnlm2$rvi$1@news.net.uni-c.dk...
> > Response.CacheControl = "no-cache"
> > Response.AddHeader "pragma","no-cache"
>
> Det er jo fint nok. Men hvorfor skrive i ASP hvad man ligeså godt kan
skrive
> i HTML??

Det kan da altid diskuteres, men nu spurgte manden jo om det kunne gøres i
ASP


> Er det ikke altid bedre at få klienten til at lave det klienten kan (og i
> det her tilfælde gør den det vel under alle omstændigheder) og så få
> serveren til at lave alt det andet?

Det kommer vel an på hvad det drejer sig om, og den specifikke situation.

> Jeg ved godt det ikke betyder noget rent praktisk i det her tilfælde, men
> principielt er det vel sådan man bør tænke??
>
> Nu kender jeg ikke rigtigt AddHeader funktionen så det kan jo være der
rent
> faktisk er en fornuftig forklaring (det plejer der jo at være )

Ja, det skal der nok være

Chrisser



Kasper Katzmann (05-12-2002)
Kommentar
Fra : Kasper Katzmann


Dato : 05-12-02 15:09

> > Er det ikke altid bedre at få klienten til at lave det klienten kan (og
i
> > det her tilfælde gør den det vel under alle omstændigheder) og så få
> > serveren til at lave alt det andet?
>
> Det kommer vel an på hvad det drejer sig om, og den specifikke situation.

Det er jeg nu ikke helt sikker på?
Har du et eksempel?


/Kasper K



Jesper Stocholm (05-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 05-12-02 15:10

Kasper Katzmann wrote :

>> Response.CacheControl = "no-cache"
>> Response.AddHeader "pragma","no-cache"
>
> Det er jo fint nok. Men hvorfor skrive i ASP hvad man ligeså godt kan
> skrive i HTML??

fordi proxier ikke kigger på, hvad der står i body af svar fra serveren.
Derfor vil den aldrig se, hvad der eventuelt måtte stå af META-data i
HTML-siden. Man kan derfor risikere følgende for brugere, der anvender
proxy til at tilgå internettet.

1.
Klient efterspørger en fil fra en webserver

2.
Proxy henter filen fra serveren og undersøger dens headers. Denne kan fx
være sat til at udløbe efter session er færdig. Derfor gemmer proxy siden
i sin cache.

3.
Klient modtager svaret fra proxy og ser, at der i META-tags står, at
siden udløber med det samme, og at den ikke skal gemmes i cache.

4.
Klient efterspørger lidt senere i samme session, at siden igen skal
hentes. Den ved nu, at den hverken har den i cache og at den allerede er
udløbet, så den beder proxien om at hente filen igen.

5.
Proxien modtager et request om en bestemt fil ved en webserver. Den ser
nu, at den allerede har hentet denne fil, og at den ligger i dens cache,
samt at den ikke er udløbet endnu (jvf originale headers). Derfor henter
den ikke en ny side fra webserveren men serverer den "gamle" version til
klienten.

6.
Klienten burde nu have modtaget en sprit-ny side fra webserveren, men da
headers var sat i HTML-body og ikke i headers, så får den en gammel
version, som proxien havde gemt i sin cache.

> Er det ikke altid bedre at få klienten til at lave det klienten kan
> (og i det her tilfælde gør den det vel under alle omstændigheder) og
> så få serveren til at lave alt det andet?
> Jeg ved godt det ikke betyder noget rent praktisk i det her tilfælde,
> men principielt er det vel sådan man bør tænke??

ja ... principielt. Man kan også bede sin webserver om at sætte disse
headers alle steder, og det vil måske kunne lette presset lidt. Man skal
også tænke på, at det som oftest ikke vil være et spørgsmål om at sætte
nye headers - men i stedet at ændre indholdet i dem. Fx sættes der som
standard altid headeren

CacheControl: private

hvis der ikke specificeres andet.

> Nu kender jeg ikke rigtigt AddHeader funktionen så det kan jo være der
> rent faktisk er en fornuftig forklaring (det plejer der jo at være

AddHeader bruges til at sætte en header af eget valg. Du kan fx bruge den
til at gøre

Response.Addheader "CacheControl","no-cache"

der vil give det samme som

Response.CacheControl = "no-cache"



--
Jesper Stocholm - http://stocholm.dk
if you are competing with the darknet, you must compete on the darknet's
own terms: that is convenience and low cost rather than additional
security. ( http://crypto.stanford.edu/DRM2002/darknet5.doc )

Kasper Katzmann (05-12-2002)
Kommentar
Fra : Kasper Katzmann


Dato : 05-12-02 21:16

Jesper Stocholm griflede følgende:

> Kasper Katzmann wrote :
>
>>> Response.CacheControl = "no-cache"
>>> Response.AddHeader "pragma","no-cache"
>>
>> Det er jo fint nok. Men hvorfor skrive i ASP hvad man ligeså godt kan
>> skrive i HTML??
>
> fordi proxier ikke kigger på, hvad der står i body af svar fra
> serveren. Derfor vil den aldrig se, hvad der eventuelt måtte stå af
> META-data i HTML-siden. Man kan derfor risikere følgende for brugere,
> der anvender proxy til at tilgå internettet.

Med Body, mener du så hele pivetøjet (<html><head> og <body>)?
For meta'erne ligger jo i <head>.

Ellers lød det rigtigt fornuftigt, det du skrev

/Kasper K



Jesper Stocholm (05-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 05-12-02 21:25

Kasper Katzmann wrote :

> Jesper Stocholm griflede følgende:
>
>> Kasper Katzmann wrote :
>>
>>>> Response.CacheControl = "no-cache"
>>>> Response.AddHeader "pragma","no-cache"
>>>
>>> Det er jo fint nok. Men hvorfor skrive i ASP hvad man ligeså godt kan
>>> skrive i HTML??
>>
>> fordi proxier ikke kigger på, hvad der står i body af svar fra
>> serveren. Derfor vil den aldrig se, hvad der eventuelt måtte stå af
>> META-data i HTML-siden. Man kan derfor risikere følgende for brugere,
>> der anvender proxy til at tilgå internettet.
>
> Med Body, mener du så hele pivetøjet (<html><head> og <body>)?
> For meta'erne ligger jo i <head>.

et svar fra en webserver er delt op i to dele:

header
entity-body

header-delen indeholder svarkoden fra serveren, hvilken server der tales
med, expire-linier, content-encoding, content-type etc. Entity-body
indeholder i tilfældet et svar fra en server hele "HTML-siden". Et GET-
request fra en klient indeholder ingen data i entity-body, men hvis der
POSTes data til serveren, så er variable+værdier inkluderet i denne entity-
body.

> Ellers lød det rigtigt fornuftigt, det du skrev



--
Jesper Stocholm - http://stocholm.dk
Ny FAQ for dk.edb.internet.webdesign.serverside.asp : http://asp-faq.dk
Svar til gruppen og ikke til mig privat !

Kim Bach Petersen (05-12-2002)
Kommentar
Fra : Kim Bach Petersen


Dato : 05-12-02 15:17

Kasper Katzmann wrote:
>> Response.CacheControl = "no-cache"
>> Response.AddHeader "pragma","no-cache"
>
> Det er jo fint nok. Men hvorfor skrive i ASP hvad man ligeså godt kan
> skrive i HTML??

Jeg ved ikke, om det gør en forskel i det konkrete tilfælde, men det kan
have betydning for, hvordan klienten håndterer header-informationerne.

Siden

http://www.asp-faq.dk/article/?id=5

beskriver fx hvordan refresh virker forskelligt afhængigt af
sikkerhedsindstillingerne.

Kim



Torben Philippsen (05-12-2002)
Kommentar
Fra : Torben Philippsen


Dato : 05-12-02 12:23

Gølder det så for alle browsere, eller skal man tage højde for forskellige
browsertyper også?

M.v.h.
Torben Philippsen
> Du kan gøre det i ren HTML med følgende i din <HEAD> blok:
>
> <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
> <META HTTP-EQUIV="Cache-Control" CONTENT="no-store">
>
>



Chrisser (05-12-2002)
Kommentar
Fra : Chrisser


Dato : 05-12-02 12:53

"Torben Philippsen" <torbenph@worldonline.dk> skrev i en meddelelse
news:3def36d6$0$71625$edfadb0f@dread11.news.tele.dk...
> Gølder det så for alle browsere, eller skal man tage højde for forskellige
> browsertyper også?
>

Det skulle være fuldstændig browser-uafhængigt - jeg har i hvert fald aldrig
hørt andet.
Og det med at bruge minustal for minutter har jeg fået anbefalet pga.
tidsforskelle mellem klient og server, så kan du selv finde ud af hvad du
tror du har brug for.
Hele verden: <%Response.Expires = -1442%> ( 60*24)


Chrisser




Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste