Schrodingers-cat

offline worker

Aug 3rd, 2017
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let headers = new Headers();
  2. headers.append( 'cache-control', 'no-cache' );
  3. headers.append( 'pragma', 'no-cache' );
  4.  
  5. let offlineResponse = new Response( '<div><h2>Uh oh that did not work</h2></div>', {
  6.     headers: {
  7.         'Content-type': 'text/html'
  8.     }
  9. } );
  10.  
  11. self.addEventListener( 'install', function ( installevent ) {
  12.     installevent.waitUntil(
  13.         caches.open( 'myCache' )
  14.         .then( cache => {
  15.             return cache.addAll( [ 'test.html', 'test.css', 'bower_components/' ] )
  16.         } )
  17.         .then( success => {
  18.             console.log( "Success! Installed myCache" );
  19.         } )
  20.     )
  21. } );
  22.  
  23. self.addEventListener( "activate", function ( activateevent ) {
  24.     //Do Nothing
  25. } );
  26.  
  27. self.addEventListener( 'fetch', ( event ) => {
  28.     var req = new Request( 'test-connectivity.html', {
  29.         method: 'GET',
  30.         mode: 'same-origin',
  31.         headers: headers,
  32.         redirect: 'manual' // let browser handle redirects
  33.     } );
  34.     event.respondWith( fetch( req, {
  35.             cache: 'no-store'
  36.         } )
  37.         .then( function ( response ) {
  38.             return fetch( event.request )
  39.         } )
  40.         .catch( function ( err ) {
  41.             return caches.open( 'myCache' )
  42.                 .then( cache => {
  43.                     return cache.match( 'test.html' )
  44.                         .then( cache_hit => {
  45.                             let cache_miss = offlineResponse;
  46.                             return ( cache_hit ? cache_hit : cache_miss );
  47.                         } )
  48.                 } )
  49.         } ) )
  50. } );
Add Comment
Please, Sign In to add comment