防止缓存CSS文件

时间:2012-03-05 00:59:37

标签: php css apache caching browser-cache

我正在使用PHP开发一个简单的网站。

开发配置: WAMP

生产配置: LAMP

在测试时,我更改了我的CSS文件,但是当我重新加载页面时,我的浏览器(不确定)仍然使用旧的缓存css。

我做了一些谷歌搜索,找到了我已经尝试过的不同解决方案

  • 在css css/main.css?78923
  • 的末尾附加查询
  • 使用Ctrl + R(在Firefox中)强制获取资源
  • 禁用Firefox缓存以及使用Clear Cache Firefox插件。

如果没有这个工作,我做了一些谷歌搜索,在那里我遇到了一个堆栈页面(here),有人建议Apache缓存资源。所以,问题不在于Firefox,而在于服务器。那家伙还提出了一个我不理解的解决方案(我是新手)

我的问题分为两部分:

  1. Apache缓存资源是真的吗? (我如何检查是否有?)
  2. 如何防止缓存
  3. PS:在堆栈问题中复制和粘贴解决方案(我上面作为链接的那个)不起作用:(

6 个答案:

答案 0 :(得分:16)

我曾经遇到过这个问题几次,并且通常会通过调用我的css来解决生产网站上的问题

<link rel="stylesheet" type="text/css" href="style.css?v=1" />

当您推出更新时,只需将v=1更改为v=2,它会强制您的所有用户浏览器获取新的样式表。这也适用于脚本文件。如果您在Google上查看来源,您会发现他们也使用此方法。

答案 1 :(得分:8)

我曾经遇到过与网络安装造成的LAMP开发系统相同的问题。我设法通过将这两行添加到我的apache conf中来摆脱它。

EnableMMAP off
EnableSendfile off

答案 2 :(得分:1)

在我的php页面中,我通常会将当前日期时间添加到css href:

的末尾
<link rel="stylesheet" type="text/css" href="style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>" />

参考:Here

答案 3 :(得分:1)

我知道这是一个古老的问题,但我刚刚遇到过这个并且有一些相同的问题。这是一种不在任何文件上保留缓存的快速方法:

<link rel="stylesheet" href="css/style.css?<?=time()?>">

每次加载页面时,使用帮助都会获得最新版本。

答案 4 :(得分:0)

  1. Apache(-modules)可以缓存资源,但这不是您当前的问题。
  2. 禁用浏览器缓存,重新加载时刷新缓存或使用修改标头传递css。您可以编写一个设置到期标头的脚本,以便您的浏览器必须获得新版本的CSS。
  3. 无论如何,我没有明白这一点。对于开发,只需禁用浏览器缓存或按Ctrl + r。

    即可

答案 5 :(得分:0)

我在资产文件(js,css等)中更改内容时总是使用httcacheclean