使用JavaScript使浏览器的缓存无效

时间:2010-01-30 20:43:22

标签: javascript css caching sass

我在Django做一个项目并使用djangos-css(http://github.com/dziegler/django-css)和Sass(http://sass-lang.com/)。使用django-css在开发中提供Sass文件。我想编写一个JavaScript例程,每隔一秒检索一次CSS资产。这样做的目的是让设计人员可以编辑Sass文件,点击保存,并立即在浏览器中查看结果,而无需切换应用程序并点击刷新。

基本上我需要一种方法让JavaScript强制浏览器重新下载某些文件而不进行页面刷新。这可能吗?

2 个答案:

答案 0 :(得分:2)

最简单的方法通常是在网址上添加一个唯一的参数,我经常只使用时间戳

var timestamp = (new Date()).getTime();
url += '?time=' + timestamp;

如果您的请求已经有参数,请注意,您需要添加&time=' + timstamp

浏览器无法缓存请求,因为每个请求看起来都是唯一的。

答案 1 :(得分:2)

并非所有缓存都会使用查询字符串缓存内容。

Steve Souders建议“......避免可缓存资源的查询字符串”。他发现在这种情况下,5-20%的请求不会被缓存。特别是查询字符串根本无法使用某些CDN进行缓存失效。

更好的方法是使用每个版本的javascript文件名生成MD5,例如

{path to script file}/filename-{md5 hash}.js