【发布时间】:2012-06-01 18:00:10
【问题描述】:
我对 javascript 文件添加了相当大的更改。但是,为了注册新的更改,我需要刷新浏览器。我想这对于使用该网站的所有其他人来说也是如此。
有没有办法让客户端的浏览器缓存失效,强制下载新的js文件?
【问题讨论】:
标签: javascript http caching browser-cache
我对 javascript 文件添加了相当大的更改。但是,为了注册新的更改,我需要刷新浏览器。我想这对于使用该网站的所有其他人来说也是如此。
有没有办法让客户端的浏览器缓存失效,强制下载新的js文件?
【问题讨论】:
标签: javascript http caching browser-cache
你可以重命名文件,或者在加载文件时添加一个随机参数:
<script src="/javascripts/application.js?version=4" type="text/javascript"></script>
【讨论】:
您可以在文件名中添加一个参数,例如
<script src="script.js?rnd=2131231"></script>
【讨论】:
有一个非常全面的讨论here,有几种方法可以做到这一点。
如果您的项目不够大或您不使用 apache,推荐的解决方案 (mod_pagespeed) 可能不是您的最佳解决方案,在这种情况下,我会推荐如下格式:
<script src="/{sha_1_here}/script.js"></script>
而不是 GET 参数,因为显然某些浏览器不会缓存带有参数的脚本。
这应该适用于任何地方,您只需要重写 URL 服务器端。
【讨论】:
出于开发目的,我禁用了浏览器端的缓存,以便它始终获取。
但是对于生产,要重置以便所有客户端用户的浏览器都应该下载新版本,您可以查看 apache 的设置以使缓存文件过期。
【讨论】: