cache를 위한 서비스워커 기본 모양

*. index.html

<script>
// 서비스 워커 등록
if (navigator.serviceWorker) {
  navigator.serviceWorker.register('keyboard88-sw.js').then(function(registration) {
    console.log('ServiceWorker registration successful with scope:',  registration.scope);
  }).catch(function(error) {
    console.log('ServiceWorker registration failed:', error);
  });
}
</script>


*. keyboard88-sw.js

// Choose a cache name
const cacheName = 'cache-v1';
// List the files to precache
const precacheResources = [
  'keyboard88.html',
  // 'modules/bootstrap/bootstrap.min.css',
  'https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css',
  'keyboard-core.css',
  'keyboard88.css',
  'noteTable.js',
  'noteValues.js',
  'waveTables.js',
  'webKeyboard.js',
  'keyboard88-manifest.json',
  'webMusicKeyboard88.png',
];

// When the service worker is installing, open the cache and add the precache resources to it
self.addEventListener('install', (event) => {
  console.log('Service worker install event!');
  event.waitUntil(caches.open(cacheName).then((cache) => cache.addAll(precacheResources)));
});

self.addEventListener('activate', (event) => {
  console.log('Service worker activate event!');
});

// When there's an incoming fetch request, try and respond with a precached resource, otherwise fall back to the network
self.addEventListener('fetch', (event) => {
  console.log('Fetch intercepted for:', event.request.url);
  event.respondWith(
    caches.match(event.request).then((cachedResponse) => {
      if (cachedResponse) {
        return cachedResponse;
      }
      return fetch(event.request);
    }),
  );
});


댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
jStat 1
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자