簡體   English   中英

在PHP中緩存動態CSS文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM