在不使用服务工作人员的Web纯香草JavaScript应用程序中,我想显式缓存位于AWS S3文件服务器上的JavaScript文件。下面的脚本会坐在index.html文件的应用程序(我已经修改了URL,因为它是一个客户端项目):缓存api中检索的JavaScript文件未执行
<script>
caches.match('https://s3.amazonaws.com/com.myproject/myjavascript.js')
.then(function(response) {
if (response) {
return response;
} else {
fetch('https://s3.amazonaws.com/com.myproject/myjavascript.js')
.then(function(res) {
return caches.open('mycache')
.then(function(cache) {
cache.put('https://s3.amazonaws.com/com.myproject/myjavascript.js',res.clone());
console.log(res.clone());
return res;
});
});
}
});
</script>
我认为此代码应做到以下几点:检查myjavascript。 js文件在缓存中。如果是,则返回将由浏览器执行的JavaScript文件。如果在缓存中未找到myjavascriptfile.js,则会将其提取并放入子缓存'mycache'中,最后返回到将执行的浏览器。
运行此操作后,我在缓存中找到文件的URL,其响应为“Ok”,但该代码未被浏览器执行,并且我没有在Chrome浏览器中看到源文件内容开发者工具。
为什么这不起作用?我在这方面的想法出了什么问题。
非常感谢, 弗雷德
你在控制台日志中得到什么? – Hunter
你确定这不能使用htaccess,http头等声明吗?此外,这些javascript命令是否与所有当前浏览器兼容?另外,可能有一个js库来处理这个问题。 –
感谢您的评论Eyal。 Fetch具有相当不错的浏览器支持(全球目前为79%:http://www.caniuse.com/#search=fetch)。这是一个技术要求,我使用了Vanilla JavaScript,并且是JQuery可以处理的。 – Fred