将随机数添加到.css,以便它不会缓存

Bly*_*ynn -1 javascript jquery

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

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

<link href="styles.css+ numBAH +" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 7

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

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

但是:

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

解决方案我建议:

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

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


Dav*_*und 7

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


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