我的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(Ctrl + F5)
Chrome(F5)
Chrome(Ctrl + F5)
请解释一下,为什么Ctrl + F5在这种情况下不清除缓存?