2012-02-15 102 views
6

使用文本!插件,是否有强制RequireJS重新加载文件而不是返回缓存数据的方法?强制RequireJS文本!重新加载

+0

你能提供一个链接到插件吗?你有尝试过什么吗?不知何故,它失败了吗? – 2012-02-15 23:06:42

+0

该插件是http://requirejs.org/docs/api.html#text – nicholas 2012-02-15 23:30:35

+3

不,没有什么是失败的,它实际上是应该的。如果您加载文本文件,则该文件的任何后续请求都会返回原始加载的数据。我正在寻找的是这个文件可能已经改变并且应该被刷新的奇怪情况。 – nicholas 2012-02-15 23:33:00

回答

1

RequireJS将只为每个请求缓存文件。页面重新载入将再次获取它。 如果你看到不同的东西,那是因为:

  • 要么你有缓存在你的服务器上。
  • 或您的浏览器缓存请求。你当然可以在浏览器上禁用它。

如果您希望浏览器每次都获取干净的文件,则应该在服务器上为这些资源设置一个no-cache标头。

+1

强制浏览器加载文件从服务器可以尝试使用randomy生成的查询字符串调用它们 - 像/Some-path-to-file/MyJSfile.js?v=TIMESTAMP – shershen 2012-02-16 18:33:33

+0

@shershen唐' t认为你可以用require.js – ggozad 2012-02-16 19:51:37

+1

@ggozad做到这一点,您可以使用requirejs.config({urlArgs:'getparam'})向使用requirejs所做的所有模块请求附加GET参数 - 这可以用于中断浏览器缓存 – 2013-03-14 17:00:51

0

我认为,你可以通过提供一个缓存清单添加新的HTML5缓存功能:http://www.html5rocks.com/en/tutorials/appcache/beginner/

,那么你可以使用requirejs“domready中”得到适当的负载事件: http://requirejs.org/docs/api.html#pageload

,然后听正确的事件(从第一个环节采取的代码):在这一点上

window.applicationCache.addEventListener('updateready', function(e) { 
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { 
    // Browser downloaded a new app cache. 
    if (confirm('A new version of this site is available. Load it?')) { 
    window.location.reload(); 
    } 
} else { 
    // Manifest didn't changed. Nothing new to server. 
}}, false); 

每当更新urlArgs你会得到新的js文件,并与清单高速缓冲存储器˚F你会得到新的html文件