动态css的缓存头(通过PHP生成)

Max*_*Max 7 css php caching header dynamic

我的CSS文件实际上是一个PHP文件,它与内容类型一起提供,text/css以便我可以在该文件中使用PHP变量.style.php看起来像这样:

<?php
header('Content-Type: text/css');
$bgColor = '#000';
?>

body { background:<?php print $bgColor; ?>; }
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但如果浏览器缓存动态创建的css文件,我有点担心.

在查看firebug中的请求时,我觉得style.php每次重新加载页面时浏览器都会重新加载.

我已经尝试添加这些缓存标头:

header('Cache-control: must-revalidate');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 60 * 60 * 24) . ' GMT');
Run Code Online (Sandbox Code Playgroud)

但没有运气.每次加载页面时仍会加载该文件.为了强制浏览器在一定时间内缓存文件,有哪些适当的标题?

Ins*_*ire 2

如果您希望浏览器缓存文件,则应将 Cache-control 标头设置为 public:

header('Cache-control: public');
Run Code Online (Sandbox Code Playgroud)

Must-revalidate 意味着浏览器将检查文件是否已更新,这将调用您的 PHP 脚本。

  • 根据 HTTP/1.1 规范,这不是必须验证的含义 - 它只应该在缓存内容变得陈旧后启动(按照 Expires 标头或 Cache-Control 中的 max-age 值的指示) ),但有些浏览器似乎确实忽略了规范并无论如何发送请求。不过,除非连接经过身份验证,否则“public”并不真正适用。我会使用“Cache-Control: max-age=86400”来强化 Expires 标头中的时间。 (5认同)