我在本地使用app引擎,有时JS文件在页面刷新之间被缓存,它让我发疯,因为我不知道我正在尝试编写的javascript代码中是否存在错误,或者缓存是否正在运行。
如何完全禁用* .js文件的缓存?或者问题是,如何让它变得聪明,就像基于最后修改日期一样。
谢谢!
更新 - 所以事实证明Chrome Dev(至少对于mac)有缓存问题,回到Chrome Beta修复所有这些。答案仍然有用,谢谢
答案 0 :(得分:13)
基于the docs,您可以指定应用程序范围的缓存过期时间:
除非另有说明,否则网络浏览器会在一段有限的时间内保留从网站加载的文件。您可以通过包含default_expiration元素(顶级元素)为应用程序的所有静态文件处理程序定义全局默认缓存时间段。您还可以为特定的静态文件处理程序配置缓存持续时间。 (脚本处理程序可以通过将适当的HTTP标头返回给浏览器来设置缓存持续时间。)
<强> default_expiration 强>
静态文件处理程序提供的静态文件应该在用户的浏览器中缓存的时间长度,如果处理程序没有指定自己的到期时间。该值是一个由空格分隔的数字和单位的字符串,其中单位可以是d表示天数,h表示小时数,m表示分钟数,s表示秒数。例如,“4d 5h”将缓存过期设置为浏览器首次加载文件后的4天和5小时。
default_expiration是可选的。如果省略,则默认行为是允许浏览器确定自己的缓存持续时间。
...如果您想逐个目录指定过期时间:
<强>期满强>
此处理程序提供的静态文件应该在用户的浏览器中缓存的时间长度。该值是一个由空格分隔的数字和单位的字符串,其中单位可以是d表示天数,h表示小时数,m表示分钟数,s表示秒数。例如,“4d 5h”将缓存过期设置为浏览器首次加载文件后的4天和5小时。
尝试将它们设置为0d0h或1s,看看它是否完全禁用了缓存。
答案 1 :(得分:12)
主要站点使用的常见做法是永久缓存文档,但在.js或.css调用的URL中包含基于发布版本或日期的唯一标识符。例如:
<script type="text/javascript" src="static/util.js?version=20100310"></script>
通过这种方式,您可以获得最佳缓存以及始终最新的文件。唯一的诀窍是弄清楚如何在您的网址中包含最新版本号,您可以根据您的部署环境自动执行此操作。