【问题标题】:Remove loading artifact with PHP generated CSS使用 PHP 生成的 CSS 删除加载工件
【发布时间】:2011-02-14 23:50:57
【问题描述】:

我正在使用 PHP 创建可维护的样式表,如下文所述: http://www.barelyfitz.com/projects/csscolor/

但是,由于 PHP 需要一点时间来“动态”生成这个文件,它不会被客户端的浏览器缓存,并且会在几分之一秒内将所有元素显示为空白/无样式。有没有办法缓存 CSS 或删除该工件?

网站参考是http://www.leadwerks.net/

谢谢!

【问题讨论】:

  • 现在就像魔鬼一样,在我发布我的问题后似乎没有发生!然而,我认为这只是幸运。如果我添加了一个冗长的操作,它可能会在几秒钟内呈现为无样式,不是吗?

标签: php css load browser-cache


【解决方案1】:

如果 CSS 文件是动态生成的,但不根据请求更改,请发送遥远的过期标头,并将上次修改时间附加到文件中,以便在需要时打破缓存更新它。

更新

所以我猜你的 PHP 文件会在某个地方......

header('Content-Type: text/css');

...所以添加这个...

header('Expires: '.gmdate('D, d M Y H:i:s', strtotime('+1 year')).' GMT');

然后,在引用 CSS 文件时,这样做...

<?php echo $file = '/styles/custom.php' ;?>
<link rel="stylesheet"
      type="text/css"
      href="<?php echo $file; ?>?m=<?php echo filemtime($file); ?>"
/>

否则,用户在首次下载 CSS 后的一年内都看不到您网站的更改。更新文件时,您将更改附加的数字。如果您没有实际更改文件(它使用数据库调用),您可以选择最后更新的行或附加版本控制号。

【讨论】:

  • 能否给我一个代码示例?我对 PHP 不是很熟悉。谢谢:)
  • 我不确定我是否理解 ?m= 对文件的影响。这是在哪里引用的?
  • @Lazlo 根本不影响文件,你只需要文件名的一部分会随着文件的变化而改变,否则你的用户的客户端永远不会下载新的 CSS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多