service-worker.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /* eslint-disable eslint-comments/disable-enable-pair */
  2. /* eslint-disable no-restricted-globals */
  3. /* eslint-disable no-underscore-dangle */
  4. /* globals workbox */
  5. workbox.core.setCacheNameDetails({
  6. prefix: 'antd-pro',
  7. suffix: 'v1',
  8. });
  9. // Control all opened tabs ASAP
  10. workbox.clientsClaim();
  11. /**
  12. * Use precaching list generated by workbox in build process.
  13. * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.precaching
  14. */
  15. workbox.precaching.precacheAndRoute(self.__precacheManifest || []);
  16. /**
  17. * Register a navigation route.
  18. * https://developers.google.com/web/tools/workbox/modules/workbox-routing#how_to_register_a_navigation_route
  19. */
  20. workbox.routing.registerNavigationRoute('/index.html');
  21. /**
  22. * Use runtime cache:
  23. * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.routing#.registerRoute
  24. *
  25. * Workbox provides all common caching strategies including CacheFirst, NetworkFirst etc.
  26. * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.strategies
  27. */
  28. /**
  29. * Handle API requests
  30. */
  31. workbox.routing.registerRoute(/\/api\//, workbox.strategies.networkFirst());
  32. /**
  33. * Handle third party requests
  34. */
  35. workbox.routing.registerRoute(
  36. /^https:\/\/gw\.alipayobjects\.com\//,
  37. workbox.strategies.networkFirst(),
  38. );
  39. workbox.routing.registerRoute(
  40. /^https:\/\/cdnjs\.cloudflare\.com\//,
  41. workbox.strategies.networkFirst(),
  42. );
  43. workbox.routing.registerRoute(/\/color.less/, workbox.strategies.networkFirst());
  44. /**
  45. * Response to client after skipping waiting with MessageChannel
  46. */
  47. addEventListener('message', (event) => {
  48. const replyPort = event.ports[0];
  49. const message = event.data;
  50. if (replyPort && message && message.type === 'skip-waiting') {
  51. event.waitUntil(
  52. self.skipWaiting().then(
  53. () => {
  54. replyPort.postMessage({
  55. error: null,
  56. });
  57. },
  58. (error) => {
  59. replyPort.postMessage({
  60. error,
  61. });
  62. },
  63. ),
  64. );
  65. }
  66. });