繁体   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