トップページ > コンテンツ > プログラミング入門 > Ajax入門 > JavaScript入門 > HTML5 > Service Worker > CacheAPI

以下のスクリプトをService Workerの登録を利用して登録すると、キャッシュに入れてくれるようだ。

一度登録してから、同階層に置いたhoge.htmlにアクセスしてみると、
その後hoge.htmlの中身を書き換えても前の値を表示してくれるっぽい。

/*test.html(ServiceWorkerをキックする登録元)*/
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="jquery-1.10.2.js"></script>
    <title>test</title>  
</head>
<body>
     <script src="test.js"></script>
</body>
</html>

/*test.js(ServiceWorkerを登録するスクリプト)*/
$(function() {
   if('serviceWorker' in navigator) {
       console.log("serviceWorkerに対応");
       navigator.serviceWorker.register('./serviceWork.js')
       .then(function(registration) {
           console.log("serviceWork登録完了",registration);
           return navigator.serviceWorker.ready;
       })
       .catch(function(err) {
           console.log("serviceWorker登録失敗",err);
       });
   } else {
       console.log("serviceWorker非対応");
   }
});

/*serviceWork.js(登録されるスクリプト)*/
importScripts('./cache-polyfill-master/index.js'); //2015/7現在、まだpolyfillが必要な模様。

self.oninstall = function(event) {
   event.waitUntil(caches.open('cache名')
       .then(function(cache) {
           return cache.addAll(['./hoge.html']); //ここでキャッシュに追加
       }));
}

self.onfetch = function(event) {
   event.respondWith(caches.open('cache名').then(
       function(cache) {
           return cache.match(event.request).then(
               function(response) {
                   return response; //cacheに合致するもの。
               })
       })
   )
}

参考URL:
http://www.w3.org/TR/2015/WD-service-workers-20150625/ (4 Execution Context)
最終更新:2015年07月18日 19:47