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

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
cache og dynamiske sider
Fra : Tinky Winky


Dato : 05-01-03 16:13

MS IE cache'er ikke mine sider. Jeg har lavet det sådan at alle sider hvor
der ikke bliver brugt POST, skal opfattes/caches som en normal .html side.
Men URL'en indeholder GET argumenter (side.php?var=1). Jeg har også et
script der bruges til at downloade billeder - det er især irriterende når de
ikke bliver cached - bare man går hen til en anden side og trykker BACK,
reloader billederne.

Desuden bruger jeg sessions(cookies). Det tror jeg også afholder IE fra at
cache.

Har I nogen gode råd til hvordan jeg får IE til at cache?

Det skal nok være noget med at sende nogle andre headers ud, eller lave
noget med URL. Til billed download vil jeg faktisk gerne have URL ændret fra
"hentfil.php?filnavn=blomst.gif" til noget ala "hentfil/blomst.gif".

Men ellers vil jeg gerne kunne beholde "?var=.." metoden. Er det ikke noget
rod at have en directory opbygning hvis man har flere variable?
"minside.php?var1=a&var2=b&var3=c" bliver til minside.php/a/b/c/ ?



 
 
Lars Dybdahl (05-01-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 05-01-03 20:44

Webserveren sender et antal default headers, der kan sættes op i
webserveren. Man kan så med Header() php funktionen sende ekstra eller
alternative headers.

Som default caches php sider ikke, fordi de er dynamisk genereret. Det sker
ved at headeren tilpasses til dette. Hvis du derimod fra dit php script
sender headers, der indikerer, at det godt må caches, så vil det virke.

Der er en række forskellige måder at indikere dette på. Du bør både håndtere
http/1.0 og http/1.1 standarden, så det nemmeste er nok at kigge på disse
to. En ting er filens udløbstid.

Jeg håber, at det giver dig nogle hints.

Hilsen,

Lars Dybdahl.

Tinky Winky wrote:
> MS IE cache'er ikke mine sider. Jeg har lavet det sådan at alle sider hvor
> der ikke bliver brugt POST, skal opfattes/caches som en normal .html side.
> Men URL'en indeholder GET argumenter (side.php?var=1). Jeg har også et

--
Dybdahl Engineering
http://dybdahl.dk/

Tinky Winky (05-01-2003)
Kommentar
Fra : Tinky Winky


Dato : 05-01-03 21:18

> Webserveren sender et antal default headers, der kan sættes op i
> webserveren. Man kan så med Header() php funktionen sende ekstra eller
> alternative headers.
>
> Som default caches php sider ikke, fordi de er dynamisk genereret. Det
sker
> ved at headeren tilpasses til dette. Hvis du derimod fra dit php script
> sender headers, der indikerer, at det godt må caches, så vil det virke.

En simpel <? phpinfo(); ?> bliver cached i MSIE. Ved fx at gå til en anden
side og trykke back i browseren, bruger MSIE den version den lige har fået.
Men på en side jeg er i gang med sker det ikke. Jeg tror at en af grundene
er at jeg bruger sessions.

> Der er en række forskellige måder at indikere dette på. Du bør både
håndtere
> http/1.0 og http/1.1 standarden, så det nemmeste er nok at kigge på disse
> to. En ting er filens udløbstid.

Jeg har prøvet forskellige ting med headers. Men MSIE er vist rimelig
ligeglad med dem, for jeg tror at det er start_session() der fører til at
der bliver sat en cookie, og så vil den tilsyneladende ikke cache.

> Jeg håber, at det giver dig nogle hints.

Ja tak, men jeg er faktisk mere ude efter nogle facts, erfaringer og evt.
links. Bl.a. om hvordan MSIE cache'er i praksis i forhold til sessions. Og
gerne hvilke headers der virker og ikke virker og hvorfor. Derudover kan en
URL ala "minside.php?var=x" gøre at der ikke bliver cached.

En anden ting er $HTTP_IF_MODIFIED_SINCE, jeg har prøvet at lege med, men
jeg har ikke oplevet at den er sat til nogen værdi.



Lars Dybdahl (06-01-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 06-01-03 01:17

Det kan godt være, at din specielle brug får PHP til at sende andre headers,
men du kan som sagt altid få php til at sende helt specifikke headers til
netop dit formål, hvorved den så ikke vil sende de tilsvarende automatiske
headers.

Generelt er det en god ide at kende http protokollen:

http://www.w3.org/Protocols/

Her er http/1.1:

ftp://ftp.isi.edu/in-notes/rfc2616.txt

Kig bl.a. på:

Cache-Control = "Cache-Control" ":" 1#cache-directive

cache-directive = cache-request-directive
| cache-response-directive

cache-request-directive =
"no-cache" ; Section 14.9.1
| "no-store" ; Section 14.9.2
| "max-age" "=" delta-seconds ; Section 14.9.3, 14.9.4
| "max-stale" [ "=" delta-seconds ] ; Section 14.9.3
| "min-fresh" "=" delta-seconds ; Section 14.9.3
| "no-transform" ; Section 14.9.5
| "only-if-cached" ; Section 14.9.4
| cache-extension ; Section 14.9.6

cache-response-directive =
"public" ; Section 14.9.1
| "private" [ "=" <"> 1#field-name <"> ] ; Section 14.9.1
| "no-cache" [ "=" <"> 1#field-name <"> ]; Section 14.9.1
| "no-store" ; Section 14.9.2
| "no-transform" ; Section 14.9.5
| "must-revalidate" ; Section 14.9.4
| "proxy-revalidate" ; Section 14.9.4
| "max-age" "=" delta-seconds ; Section 14.9.3
| "s-maxage" "=" delta-seconds ; Section 14.9.3
| cache-extension ; Section 14.9.6

cache-extension = token [ "=" ( token | quoted-string ) ]

Med hensyn til http/1.0, kig på sektion 14.32.

Du bør også sætte Last-Modified, da denne hentes ved visse forespørgsler, og
hele siden kun hentes hvis denne er ændret.

Hilsen,

Lars Dybdahl.

Tinky Winky wrote:
> En simpel <? phpinfo(); ?> bliver cached i MSIE. Ved fx at gå til en anden
> side og trykke back i browseren, bruger MSIE den version den lige har
> fået. Men på en side jeg er i gang med sker det ikke. Jeg tror at en af
> grundene er at jeg bruger sessions.

--
Dybdahl Engineering
http://dybdahl.dk/

Tinky Winky (05-01-2003)
Kommentar
Fra : Tinky Winky


Dato : 05-01-03 23:57

> Der er en række forskellige måder at indikere dette på. Du bør både
håndtere
> http/1.0 og http/1.1 standarden, så det nemmeste er nok at kigge på disse
> to. En ting er filens udløbstid.

Hvordan er det med HTTP 1.0, hvem kræver den? Er der mange klienter der
stadig bruger det? Vil en HTTP 1.0 klient slet ikke virke hvis man sender
nogle HTTP 1.1 headers?



Lars Dybdahl (06-01-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 06-01-03 01:09

http/1.0 er mest interessant til de brugere, der sidder på gamle proxy
servere. Det er jo ikke altid at det er browseren, som webserveren
kommunikerer med... nogle udenlandske isp'ere har endda proxy-tvang.

Lars.

Tinky Winky wrote:
> Hvordan er det med HTTP 1.0, hvem kræver den? Er der mange klienter der
> stadig bruger det? Vil en HTTP 1.0 klient slet ikke virke hvis man sender
> nogle HTTP 1.1 headers?

--
Dybdahl Engineering
http://dybdahl.dk/

Troels Arvin (06-01-2003)
Kommentar
Fra : Troels Arvin


Dato : 06-01-03 11:56

On Sun, 05 Jan 2003 23:57:09 +0100, Tinky Winky wrote:

> Vil en HTTP 1.0 klient slet ikke virke hvis man sender
> nogle HTTP 1.1 headers?

Princippet er:

an HTTP/1.1 message sent to an
HTTP/1.0 recipient (or a recipient whose version is unknown)
MUST be constructed so that it remains a valid HTTP/1.0
message when all headers not defined in the HTTP/1.0
specification are removed

og i øvrigt bør man normalt altid outputte HTTP/1.1 som protokolversion:

An HTTP server SHOULD send a response version equal to the
highest version for which the server is at least
conditionally compliant, and whose major version is less
than or equal to the one received in the request.

http://rfc.sunsite.dk/rfc/rfc2145.html

--
Greetings from Troels Arvin, Copenhagen, Denmark



Troels Arvin (05-01-2003)
Kommentar
Fra : Troels Arvin


Dato : 05-01-03 21:51

On Sun, 05 Jan 2003 16:12:56 +0100, Tinky Winky wrote:

> Det skal nok være noget med at sende nogle andre headers ud, eller lave
> noget med URL. Til billed download vil jeg faktisk gerne have URL
> ændret fra "hentfil.php?filnavn=blomst.gif" til noget ala
> "hentfil/blomst.gif".

Det er ret let at gøre med Apache - du kan fx. fortælle Apache, at alle
filer ved navn "hentfil" skal opfattes som PHP-filer, og så kigge i
$_SERVER['PATH_INFO'] efter argumentet ("/blomst.gif").

> Men ellers vil jeg gerne kunne beholde "?var=.." metoden.
Du kan godt kombinere parsing af PATH_INFO med alm. behandling af
GET-parametre. Prøv dig frem.

Bortset fra det: Jeg ved ikke præcis, hvorledes MSIE afgør caching, men
jeg tror ikke, at et "?" eller "="-tegn i sig selv får den til at slå
caching fra. I så fald ville TV 2's nyhedssite i hvertfald have et
performanceproblem med fx. at benytte et billede med URL som
http://nyhederne.tv2.dk/billeder/image.php?id=4231 i nyhedsartikler. For
at se HTTP-headers for nævnte URL kan du fx. benytte det super-praktiske
"curl" værktøj[1] eller fx. se på
http://www.mdb.ku.dk/tarvin/http-tool/?url=http%3A%2F%2Fnyhederne.tv2.dk%2Fbilleder%2Fimage.php%3Fid%3D4231

Benyt værktøjer som de nævnte til at se, hvordan headers for dit
PHP-genererede billedmateriale ser ud i forhold til et normalt,
Apache-only serveret, "flat" billede.

I øvrigt, ang. caching-venlighed:
http://vancouver-webpages.com/CacheNow/


Note 1:
http://curl.haxx.se/

--
Greetings from Troels Arvin, Copenhagen, Denmark


Tinky Winky (05-01-2003)
Kommentar
Fra : Tinky Winky


Dato : 05-01-03 23:55

> Det er ret let at gøre med Apache - du kan fx. fortælle Apache, at alle
> filer ved navn "hentfil" skal opfattes som PHP-filer, og så kigge i
> $_SERVER['PATH_INFO'] efter argumentet ("/blomst.gif").

Der var en post i denne gruppe for lidt tid siden med en .htaccess til det,
kan bare ikke finde den. Det skal gerne kunne køre på andet end Apache. Men
så kan man jo konfigurere det efter om det er Apache eller ej.

> Bortset fra det: Jeg ved ikke præcis, hvorledes MSIE afgør caching, men
> jeg tror ikke, at et "?" eller "="-tegn i sig selv får den til at slå
> caching fra. I så fald ville TV 2's nyhedssite i hvertfald have et
> performanceproblem med fx. at benytte et billede med URL som
> http://nyhederne.tv2.dk/billeder/image.php?id=4231 i nyhedsartikler. For
> at se HTTP-headers for nævnte URL kan du fx. benytte det super-praktiske
> "curl" værktøj[1] eller fx. se på
>
http://www.mdb.ku.dk/tarvin/http-tool/?url=http%3A%2F%2Fnyhederne.tv2.dk%2Fb
illeder%2Fimage.php%3Fid%3D4231
>
> Benyt værktøjer som de nævnte til at se, hvordan headers for dit
> PHP-genererede billedmateriale ser ud i forhold til et normalt,
> Apache-only serveret, "flat" billede.

Tak, jeg fandt et lignende tool til Windows:
http://support.microsoft.com/default.aspx?scid=KB;en-us;q284285

Vil nu eksperiementere lidt med headers.

> I øvrigt, ang. caching-venlighed:
> http://vancouver-webpages.com/CacheNow/
Har faktisk været der.

> Note 1:
> http://curl.haxx.se/
?



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste