从回调函数加载时,requirejs与缓存的工作不正确

时间:2014-10-14 11:53:28

标签: requirejs

我的javascript资源请求( /myscript.js )在响应标头中包含以下内容。

Cache-Control   must-revalidate
Content-Length  15
Content-Type    text/javascript;charset=UTF-8
Date    Tue, 14 Oct 2014 11:32:01 GMT
Expires Mon, 14 Oct 2024 10:54:04 GMT
Last-Modified   Thu, 14 Oct 2004 10:54:04 GMT
Server  Apache-Coyote/1.1

我将Expires设置为深度未来的日期,因此我希望从浏览器缓存中获取对 /myscript.js 的任何进一步请求。

我使用requirejs请求 /myscript.js

require([('/myscript.js']);

我还注意到所有缓存操作(F5和Ctrl + F5)都能正常工作。

F5导致 If-Modified-Since 请求。

Ctrl + F5清除缓存并重新加载脚本。

但是,如果我将该代码放入一些回调(如jquery ready或setTimeout):

$(document).ready(function(){
    require([('/myscript.js']);
});

setTimeout(function(){
    require([('/myscript.js']);
},1);
一切都出错了。即使Ctrl + F5也不清除缓存,这个脚本是从缓存中获取的。

在我的浏览器的网络面板中,我看到以下

Firefox(F5) Firefox

Firefox(Ctrl + F5) enter image description here

Chrome(F5) enter image description here

Chrome(Ctrl + F5) enter image description here

请解释一下,为什么Ctrl + F5在这种情况下不清除缓存?

0 个答案:

没有答案