サービスワーカーを使用しないWeb純粋なバニラJavaScriptアプリケーションでは、AWS S3ファイルサーバー上にあるJavaScriptファイルを明示的にキャッシュします。次のスクリプトは、(それがクライアントのプロジェクトだと私はURLを変更した)アプリケーションのindex.htmlファイルに座って次のようになります。cache 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)。私はこれにバニラのJavaScriptを使用した技術的な要件であり、はい、JQueryがこれを処理できます。 – Fred