webForumDet fria alternativet

Cashad CSS och reload

11 svar · 720 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Jag prövade att söka men jag söker troligen på helt fel saker...

Jag har äntligen fattat varför man ska ha sin CSS som en egen fil istället för att inkludera den i själva sidan med PHP:s include. Och det är väldigt trevligt med cash... utom när man gör förändringar i koden. Jag ser framför mig en längre period framöver när jag gradvis inför välbehövliga förbättringar av min CSS-kod. Hur försäkrar jag mig om att dessa förändringar kommer mina besökare till del om CSS:n finns i deras cash?

Vad jag absolut inte vill ha är en header som laddar om sidan var x:e minut eller timme. Det rör sig om en pusselsida och det händer att folk ägnar en och samma sida verkligt lång tid... Jag tror inte de uppskattar om deras nästan färdiga korsord eller pussel, plötsligt återgår i nolläge...

Jag har hört att det ska finnas något bra sätt via PHP...? Hur gör man annars? Hur gör ni? Vad är bra och dåligt med olika metoder? Tacksam för alla tips, tankar och funderingar om saken.

cyprysMedlem sedan dec. 20003 563 inlägg
#2

Det finns säkert många fina cachmetoder där man kör på livstider och senaster ändringar m.m.
Ett rätt vanligt hack är väl annars att länka till style.css?någotBogusVärde. Du kan ändra värdet för varje ändring i css-koden du gör. Ny länk betyder alltså att browsern inte har någon cache att hämta från, fast filen är densamma.

style.css?v001
style.css?v002

Brukar användas på bilder som helst inte ska cachas lite här och där.

@ndersMedlem sedan juni 200032 969 inlägg
#3

Jag använder visserligen inte php, men cachingen i webbläsaren är ju densamma. Jag brukar lägga på/byta en liten querystring när jag ändrar css-filen. Alltså typ:

<link rel="stylesheet" href="style.css[b]?foo=111[/b]"/>

edit: det är tydligen inte bara jag som gör så. ;)

mvh

aasahMedlem sedan mars 20034 471 inlägg
#4

Det funkar alltså att slänga på en GET-sträng till en CSS-sida som aldrig kollar värdet? Perfekt! :D Tackar!

Finns det några nackdelar med den lösningen?

cyprysMedlem sedan dec. 20003 563 inlägg
#5

Finns det några nackdelar med den lösningen?

Du måste uppdatera querystringen till ett nytt värde varje gång du ändrar css-filen, alltså även ändra default.php. Men har du skött din css är det ju bara på ett ställe. ;)

aasahMedlem sedan mars 20034 471 inlägg
#6

Det är bara på ett ställe... :)

Men det får alltså inga konsekvenser för sökmotorer tex...? Vilket tydligen kan vara fallet för vissa headers.

MatteMedlem sedan aug. 20002 975 inlägg
#7

Det går att ladda om CSS-filen med javascript också: http://www.phpportalen.net/viewtopic.php?p=391678#391678

cyprysMedlem sedan dec. 20003 563 inlägg
#8

Vilken sökmotor indexerar stylesheets? :) Jag kan inte se någon sådan nackdel direkt.

Matte: Fast är inte inte onödigt att förstöra cachen även om det inte behövs?

MatteMedlem sedan aug. 20002 975 inlägg
#9

cyprys skrev:

Matte: Fast är inte inte onödigt att förstöra cachen även om det inte behövs?

Precis, och genom att använda ett javascript endast då det behövs, cachas normalt CSS-filen.

Sedan om du aktiverar funktionen med länk eller på annat sätt när du behöver är en annan sak.

Men återgår man till utgångsfrågan ser jag inte det hela som något problem.
De besökare som påverkas är endast de som besöker som besöker webbplatsen samtidigt som man ändrar CSS-filen, för övriga laddas CSS-filen om nästa gång de besöker sidan.

Vill man dock se till att CSS-filen inte cachas, och tänkt sig använd PHP, då borde man kunna göra så här:

<?php // <-- Översta raden längst till vänster

header("Content-type: text/css");
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>

/* CSS-koden nedan */

och sedan länka in PHP-filen som CSS-fil.

aasahMedlem sedan mars 20034 471 inlägg
#10

Matte skrev:

Men återgår man till utgångsfrågan ser jag inte det hela som något problem.
De besökare som påverkas är endast de som besöker som besöker webbplatsen samtidigt som man ändrar CSS-filen, för övriga laddas CSS-filen om nästa gång de besöker sidan....

Så resten får en ny version i alla fall? Det var ju bra att inse. :)

Tack för alla förslag och idéer, jag tror att jag kör på cyprys idé till att börja med i alla fall. :D

echoSweMedlem sedan nov. 20041 189 inlägg
#11

Är det bara jag som använder F5 i webbläsaren?

cyprysMedlem sedan dec. 20003 563 inlägg
#12

echoSwe skrev:

Är det bara jag som använder F5 i webbläsaren?

Jo, men nu handlar det ju inte om vad utvecklaren ska göra utan vad användarna ska behöva göra. Dvs ingenting.

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)