我使用 jQuery .get() 函数加载模板文件,然后通过针对特定 DOM 元素将加载的 HTML 显示到页面的一部分。它工作得很好,但我最近意识到,由于一些令我困惑的原因,它正在缓存我的模板文件并屏蔽我所做的更改。
不要误会我的意思......我和下一个人一样喜欢缓存。我希望它在客户端缓存和服务器上的文件之间没有时间戳差异时进行缓存。然而,事实并非如此。更奇怪的是......使用相同的函数来加载模板......一些模板文件正在加载更新,而另一些则没有(与最近的更改相比,更喜欢缓存的版本)。
下面是我使用的加载函数。
function LoadTemplateFile ( DOMlocation , templateFile , addEventsFlag ) {
$.get( templateFile , function (data) {
$( DOMlocation ).html(data);
});
}
任何帮助将不胜感激。
新细节:
我一直在进行一些调试,现在看到返回到 success 函数的“data”变量确实具有较新的信息,但由于我尚不清楚的原因,插入到 DOM 中的内容是旧版本。这到底是如何发生的现在已经成为我的问题。
您可以在中将缓存设置为关闭jQuery.get()
称呼。请参阅jQuery.ajax() http://api.jquery.com/jQuery.ajax/文档以获取详细信息cache: false
选项。缓存如何工作的细节是特定于浏览器的,所以我认为您无法控制它的工作方式,只能控制它对于任何给定的调用是打开还是关闭。
仅供参考,当您关闭缓存时,jQuery 通过在 URL 末尾附加一个唯一的时间戳参数来绕过浏览器缓存,这使得它与任何先前的 URL 不匹配,因此没有缓存命中。
您或许还可以控制服务器上的缓存生命周期和其他几个缓存参数,这些参数将设置各种 HTTP 标头,指示浏览器允许哪些类型的缓存。在开发应用程序时,您可能希望完全关闭缓存。对于部署,我建议您启用它,然后当您修改应用程序时,处理缓存的最安全方法是稍微更改您的 URL,以便新版本的 URL 有所不同。这样,您始终可以获得最大缓存,而且用户也可以立即获得新版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)