我有一个 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是经过编辑的 ...
当 CONTENT 发生变化时,是否可以告诉浏览器重新加载style.css?例如,当$variabile[0]
从#CCC
更改为#FFF
?
答案 0 :(得分:0)
这可能是一种奇怪的方式,但我唯一可以想到的就是我的头脑。
通过在样式更新时更新版本号来创建版本控制,然后将其作为查询字符串附加
在你的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这样的石器时代浏览器一起工作......他们根本不会使用查询字符串来缓存任何内容。