2016-06-25 13 views
0

をキャッシュしない:私は、コンソールにはエラーを取得していない https://googlechrome.github.io/samples/service-worker/custom-offline-page/サービス労働者は、これは私のサービスワーカーであるhtmlファイル

'use strict'; 


const CACHE_VERSION = 1; 
let CURRENT_CACHES = { 
    offline: 'offline-v' + CACHE_VERSION 
}; 
const OFFLINE_URL = 'offline.html'; 

function createCacheBustedRequest(url) { 
    let request = new Request(url, {cache: 'reload'}); 

    if ('cache' in request) { 
    return request; 
    } 

    let bustedUrl = new URL(url, self.location.href); 
    bustedUrl.search += (bustedUrl.search ? '&' : '') + 'cachebust=' + Date.now(); 
    return new Request(bustedUrl); 
} 

self.addEventListener('install', event => { 
    event.waitUntil(

    fetch(createCacheBustedRequest(OFFLINE_URL)).then(function(response) { 
     return caches.open(CURRENT_CACHES.offline).then(function(cache) { 
     return cache.put(OFFLINE_URL, response); 
     }); 
    }) 
); 
}); 

self.addEventListener('activate', event => { 

    let expectedCacheNames = Object.keys(CURRENT_CACHES).map(function(key) { 
    return CURRENT_CACHES[key]; 
    }); 

    event.waitUntil(
    caches.keys().then(cacheNames => { 
     return Promise.all(
     cacheNames.map(cacheName => { 
      if (expectedCacheNames.indexOf(cacheName) === -1) { 

      console.log('Deleting out of date cache:', cacheName); 
      return caches.delete(cacheName); 
      } 
     }) 
    ); 
    }) 
); 
}); 

self.addEventListener('fetch', event => { 

    if (event.request.mode === 'navigate' || 
     (event.request.method === 'GET' && 
     event.request.headers.get('accept').includes('text/html'))) { 
    console.log('Handling fetch event for', event.request.url); 
    event.respondWith(
     fetch(createCacheBustedRequest(event.request.url)).catch(error => { 

     console.log('Fetch failed; returning offline page instead.', error); 
     return caches.match(OFFLINE_URL); 
     }) 
    ); 
    } 


}); 

これは標準のオフラインキャッシュサービス労働者です。

Android Chromeでは、ページをホームページに追加するとうまくいきます(アイコンとURLを定義するマニフェストがあります)。私はこの問題を解決するにはどうすればよい

Not Found 
The requested URL/offline.html was not found on this server. 

:私は電話で私の接続をオフにしたときにしかし、私は、エラーメッセージが表示されますか?

+0

「offline.html」ファイルは存在しますか? – Marco

+0

もちろん。ファイルが存在し、正常に開きます。しかし、それはキャッシュされていません。 –

答えて

0

自分のドメインを設定した方法だと思います。自分の/ドメインを/ wwwドメインにマップしました。私は定数をOFFLINE_URL = 'offline.html'に変更しました。 const toLINE_URL = 'https://example.com/offline.html';それは働いた。絶対URLを使用することは常に有効です。

+0

これは実際にあなたが要求していたアドレスには存在しませんでした:D – Marco

+0

LOL。はい。あなたは正しい。 –

関連する問題