serviceWorker.js 943 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. //缓存 css/js 静态资源
  2. const staticAssets = [
  3. './',
  4. './styles.css',
  5. './app.js'
  6. ];
  7. self.addEventListener('install', async event => {
  8. const cache = await caches.open('static-meme');
  9. cache.addAll(staticAssets);
  10. });
  11. self.addEventListener('fetch', event => {
  12. const {request} = event;
  13. const url = new URL(request.url);
  14. if(url.origin === location.origin) {
  15. event.respondWith(cacheData(request));
  16. } else {
  17. event.respondWith(networkFirst(request));
  18. }
  19. });
  20. async function cacheData(request) {
  21. const cachedResponse = await caches.match(request);
  22. return cachedResponse || fetch(request);
  23. }
  24. async function networkFirst(request) {
  25. const cache = await caches.open('dynamic-meme');
  26. try {
  27. const response = await fetch(request);
  28. cache.put(request, response.clone());
  29. return response;
  30. } catch (error){
  31. return await cache.match(request);
  32. }
  33. }