[英]cache for a dynamic css file in php
我有一個style.php文件,其中包含一些允許管理員更改某些顏色的變量
在style.php文件中,我以這種方式添加了緩存 :
<?php
$variables = array('#CCC','#800'); // from db
header('Cache-control: max-age=86400, public, must-revalidate');
header('Expires: '.gmdate('D, d M Y H:i:s',time()+86400).' GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s',filemtime('style.php')).' GMT');
?>
body{ background: <?php echo $variables[0]; ?>; }
一切都可以,也可以緩存,除了當用戶更改變量時,不會重新加載style.php(但始終被緩存)。
似乎錯誤是在filemtime('style.php')中最后修改的標頭 ,該標頭告訴瀏覽器僅在對該文件進行了物理編輯時才重新加載CSS ...
更改內容時,可以告訴瀏覽器重新加載style.css嗎? 例如,當$variabile[0]
從#CCC
更改為#FFF
?
這可能是一種奇怪的方法,但是我唯一想到的就是我的頭腦。
通過在樣式更新時更新版本號來創建版本控制,然后將其作為查詢字符串附加
在您的style.php中:
<?php
$variables = array('#CCC','#800'); // or whatever is pulled from your db
?>
body{ background: <?php echo $variables[0]; ?>; }
在您的實際頁面中
<?php
$version = 'pulled from your db'; // this would be a number, updated whenever values change
// somewhere in your head
<link type="text/css" href="style.php?v=<php print $version; ?>" />
?>
這樣,每個版本都會分別緩存,但是會隨着變量更改而重置。 您無需同時執行所有標頭設置,僅此一項就足夠了。
只是一個主意。 請注意,這不適用於IE6之類的石器時代的瀏覽器...它們根本不使用查詢字符串來緩存任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.