2010-04-15 19 views
13

我在本地使用应用程序引擎,有时JS文件正在页面刷新之间进行缓存,它让我疯狂,因为我不知道不知道我正在尝试写入的JavaScript代码是否存在错误,或者缓存是否正在动作。谷歌应用程序引擎:如何禁用'静态'文件缓存或智能缓存

如何完全禁用* .js文件的缓存?或者问题是,如何让它变得聪明,就像基于最后修改日期一样。

谢谢!

UPDATE- 因此,事实证明,Chrome Dev(至少适用于Mac)存在缓存问题,回到Chrome Beta可以修复所有这些问题。这些问题的答案至今仍然在,虽然有帮助,感谢

+0

你有没有试过用它来测试?您可以通过python脚本拥有一个'js'目录服务器,并且在部署它时将其更改为静态url – OscarRyz 2010-04-15 03:22:53

回答

11

基于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,看看它是否完全禁用缓存。

+0

我试图将其设置为0,现在头文件具有这种情况:'Cache-Control:no-cache',但是Chrome (这是一个仅限Chrome应用程序)仍然是缓存的东西。似乎浏览器可能是问题..... – adamJLev 2010-04-15 03:05:11

11

主要站点使用的一种常见做法是永久缓存文档,但包含基于发布版本或日期的唯一标识符到.js或.css调用的URL中。例如:

<script type="text/javascript" src="static/util.js?version=20100310"></script> 

这样,您可以获得最佳的缓存以及始终保持最新的文件。唯一的窍门是弄清楚如何在你的url中包含一个最新的版本号,你可以根据你的部署环境自动完成。

相关问题