06. november 2012 - 15:02Der er
6 kommentarer og 1 løsning
Expire date på css-, js- og statisk img- filer
Hejsa derude Jeg er igang med at optimere en website, hvor jeg gerne vil sætte expire date på statisk indhold som ikke ændre sig hele tiden.
Har fundet ud af at man kan gøre det generelt for alt via IIS'en under "HTTP Response Headers", men er ikke klar over hvordan jeg specifikt kan fortælle hvilke statisk filer så som file.css, file.js og file.jpg der skal have expire date på sig.
Kan se man kan tilføje "Custome HTTP response Header", hvor man kan sætte name og value. Er det her man kan fortælle hvilke filer der skal have expire date på eller bedre kan jeg gøre det fra web.config med C# kode koblet på.
I web.config er der en sektion der hedder system.webserver (som vist kun tolkes, hvis din server kører IIS 7+), hvor det er muligt at indstille clientCache under sektionen staticContent. Det kan være du skal kigge lidt nærmere på den...
Nu er det muligt at cache langt frem i tiden, men hvis f.eks. min stylesheet ændre sig. Hvordan sikre jeg mig så at clienten henter nyeste stylesheet. ?? Er løsningen at man sætter QueryString på, f.eks. all.min.css?v=20121106
Ja, det var da én løsning. Du kunne også helt ændre navnet på dit stylesheet (så får du også versionering :-)).
Jeg må erkende, at jeg ikke er helt afklaret med, hvordan man styrer caching af statisk indhold, da det jo umiddelbart (som du selv erfarer) er lidt ud af egne hænder. Spørgsmålet er, om der findes en indstilling til clientCache-elementet der angiver, at klienten altid skal tjekke serveren inden den beslutter sig for om den cachede version af dokumentet skal benyttes - jeg ved det ikke umiddelbart.
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.