我有一个基于AJAX的应用程序,它包含以下页面:
home.html --> browse_projects.html --> view_project.html
在home.html
中,我按如下方式获取脚本:
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/js/materialize.min.js"></script>
</head>
获取materialize.min.js
后,我可以看到浏览器缓存了这个。
现在,browse_projects.html
也恰好需要materialize.min.js
。
所以,我把它包括在内:
<script src="//cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/js/materialize.min.js"></script>
但是,在运行某些测试时,我注意到浏览器没有从缓存中检索它。相反,它会获得一个带有URL的新副本,例如:
https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/js/materialize.min.js?_=1490644754909
现在,我的问题是 - 为什么不检索缓存副本?我该如何强制执行此操作?
答案 0 :(得分:0)
它未在测试中缓存的原因是:_=1490644754909
- 随机数附加到URL。浏览器根据URL缓存静态资产,如果URL每次都更改,浏览器将不会缓存资产(又名:&#34;缓存清除&#34;)。如果您没有使用可以将随机字符串附加到内联URL的模板库,则可以使用Javascript加载脚本:
<script>
function loadScript(src) {
var script = document.createElement('script');
script.src = script.src + '?_=' + (+new Date());
document.head.appendChild(script);
}
loadScript('https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/js/materialize.min.js');
</script>
这会在URL末尾附加一个随机数,以防止浏览器缓存。