在不使用服務工作人員的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