/ 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
Tvungen cached side
Fra : Søren Friis


Dato : 14-01-03 05:02

Hejsa!

Jeg sidder og skriver på en side, som genererer data til et temmelig
stort javascript. Det data der bliver genereret fylder ikke noget
særligt, men selve javascriptet, fylder 17 KB og ændrer sig ikke!
På siden er der brug for at reloade ret ofte.
Er der en måde at tvinge klienten til at cache filen som indeholder
javascriptet? (det bliver included med <script src=script.js>)

Mvh Søren Friis


 
 
Niels Andersen (14-01-2003)
Kommentar
Fra : Niels Andersen


Dato : 14-01-03 07:31

Søren Friis wrote in <b0022o$ss9$1@sunsite.dk>:
> Er der en måde at tvinge klienten til at cache filen som indeholder
> javascriptet? (det bliver included med <script src=script.js>)

Du kan ikke tvinge, men måske ligger problemet i at siden reloades. Hvordan
sker det helt præcist?

Du må meget gerne give en url til siden, så vi kan se om der kunne gøres
noget bedre med headerne til js-filen.
Du kan evt. konstuere en anden side, der "includer" et javascript på samme
måde, og som reloades på samme måde. (Husk at problemet også eksisterer på
denne side, inden vi bruger en masse til på det. )

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

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


Dato : 14-01-03 09:31

Ja du kan bestemme caching for et javascript ved at lade et php-script
levere selve javasciptet a la <script src="script.php" />. Her kan du så i
php-scriptet angive http caching parametre med header() funktionen. Selv om
mange tror det, så er der ikke noget, der hedder en filendelse i URL'er, så
en .php fil kan sagtens både levere html, tekst, gif, png, pdf og
javascript.

Hilsen,

Lars.

--
Freelance programmør
Programmering mod timebetaling

Jonas Koch Bentzen (14-01-2003)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 14-01-03 09:48

Lars Dybdahl wrote:

> Ja du kan bestemme caching for et javascript ved at lade et php-script
> levere selve javasciptet a la <script src="script.php" />. Her kan du så i
> php-scriptet angive http caching parametre med header() funktionen. Selv
> om mange tror det, så er der ikke noget, der hedder en filendelse i
> URL'er, så en .php fil kan sagtens både levere html, tekst, gif, png, pdf
> og javascript.

Filendelsen er faktisk ret vigtig, for ud fra den sender serveren en
MIME-type, som browseren bruger til at afgøre, hvad den skal gøre med
filen. Derfor er det vigtigt, at man sørger for selv at sende den rigtige
MIME-type, hvis man bruger f.eks. PHP og *ikke* sender en almindelig
HTML-fil. I JavaScript-tilfældet skriver man følgende øverst på siden:

header("Content-Type: application/x-javascript");

--
Jonas Koch Bentzen

Peter Brodersen (14-01-2003)
Kommentar
Fra : Peter Brodersen


Dato : 14-01-03 10:17

On Tue, 14 Jan 2003 09:48:17 +0100, Jonas Koch Bentzen
<ingen.email@eksempel.dk> wrote:

>header("Content-Type: application/x-javascript");

Jeg kom pludselig i tvivl... hvad er baggrunden for her at bruge
application/x-javascript (tilsyneladende normal mimetype) fremfor
text/javascript, som man bruger med javascript indlejret i HTML-koden?

--
- Peter Brodersen

Jonas Koch Bentzen (14-01-2003)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 14-01-03 13:20

Peter Brodersen wrote:

> On Tue, 14 Jan 2003 09:48:17 +0100, Jonas Koch Bentzen
> <ingen.email@eksempel.dk> wrote:
>
>>header("Content-Type: application/x-javascript");
>
> Jeg kom pludselig i tvivl... hvad er baggrunden for her at bruge
> application/x-javascript (tilsyneladende normal mimetype) fremfor
> text/javascript, som man bruger med javascript indlejret i HTML-koden?

Det har jeg også tænkt over. Jeg kan bare konstatere, at .js-filer normalt
bliver sendt med application/x-javascript (i hvert fald, hvis man bruger
Apache på en Linux, hvor "js" i MIME-typefilen er koblet til
"application/x-javascript").

--
Jonas Koch Bentzen

Søren Friis (14-01-2003)
Kommentar
Fra : Søren Friis


Dato : 14-01-03 14:26

> Filendelsen er faktisk ret vigtig, for ud fra den sender serveren en
> MIME-type, som browseren bruger til at afgøre, hvad den skal gøre med
> filen. Derfor er det vigtigt, at man sørger for selv at sende den
rigtige
> MIME-type, hvis man bruger f.eks. PHP og *ikke* sender en almindelig
> HTML-fil. I JavaScript-tilfældet skriver man følgende øverst på siden:
>
> header("Content-Type: application/x-javascript");

God pointe!

Men hvad skal jeg gøre for at bede den om at cache siden?
Hvilke headers skal jeg bruge?

/SF


Søren Friis (14-01-2003)
Kommentar
Fra : Søren Friis


Dato : 14-01-03 14:27

>Her kan du så i php-scriptet angive http caching parametre med
header() funktionen.

Det er netop dem jeg søger!
Hvilke headers skal jeg bruge?

/SF


Lars Dybdahl wrote:
> Ja du kan bestemme caching for et javascript ved at lade et php-script
> levere selve javasciptet a la <script src="script.php" />. Her kan du så i
> php-scriptet angive http caching parametre med header() funktionen. Selv om
> mange tror det, så er der ikke noget, der hedder en filendelse i URL'er, så
> en .php fil kan sagtens både levere html, tekst, gif, png, pdf og
> javascript.
>
> Hilsen,
>
> Lars.
>


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


Dato : 14-01-03 14:41

Dokumentationen for cache-styring finder du her:

http://www.w3.org/Protocols/
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.

--
Freelance programmør
Programmering mod timebetaling

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

Månedens bedste
Årets bedste
Sidste års bedste