webForumDet fria alternativet

Cashad CSS och reload

PHP

11 svar · 722 visningar · startad av aasah

Medlem sedan mars 20034 471 inlägg
Frågan#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.

Medlem 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.

Medlem sedan juni 200032 967 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

Medlem 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?

Medlem 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. ;)

Medlem 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.

Medlem 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

Medlem 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?

Medlem 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.

Medlem 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

Medlem sedan nov. 20041 189 inlägg
#11

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

Medlem 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.

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)