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