0

我试图让styles.css 不缓存,因为服务器在缓存时遇到了css 问题。

<script>
var numBAH = Math.floor(Math.random()*100);
</script>

<link href="styles.css+ numBAH +" rel="stylesheet" type="text/css" />
4

3 回答 3

8

您可以在文档的开头执行此操作:

<script>
document.write('<link href="styles.css?r='+ Math.floor(Math.random()*100) +'" rel="stylesheet" type="text/css" />');
</script>

但 :

  • 你很有可能找到两次相同的数字
  • 你通常不应该避免缓存

我提出的解决方案:

1)使用(new Date()).getTime()而不是随机数

2)只需在版本更改时更改数字:(styles.css?v=3不带javascript)

于 2012-10-04T13:56:44.713 回答
7

如果您可以访问服务器端语言,那么使用查询字符串呈现链接标记会更简洁,该查询字符串是文件全部内容的哈希。这样,缓存失效器只有在文件内容实际发生变化时才会发生变化。


在看过随后的讨论之后,关于你永远不想使用缓存,因为它加载得太快,我想改变我的答案。不是为了new Date(),而是为了:修复您的页面,以便快速加载是理想的结果。如果您对此有特定问题,请针对这些问题创建一个问题,不要直接寻求糟糕的解决方法。

于 2012-10-04T13:58:02.903 回答
0

缓存破坏可以在没有服务器端渲染的情况下工作。我在移动设备和桌面设备上测试了最新版本的 firefox、chrome 和 safari,这段代码有效。(不过,我不确定 IE..)

<HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    var numBAH = Math.floor(Math.random()*10000);

    document.write('<LI' + 'NK HREF="./path/to/style.css?cacheBusting='+numBAH+'" rel="stylesheet">');
    </SCRIPT>
</HEAD>
于 2016-08-27T09:20:21.633 回答