【发布时间】:2021-09-18 16:26:02
【问题描述】:
我遇到了 JavaScript 的缓存 API 的问题。
我正在开发 PWA,所以我的应用程序中有一个 serviceWorker.js。
在这个serviceWorker.js 文件中,我想将文件添加到我的静态缓存中。所以我配置它来缓存静态文件:
var CACHE_STATIC_NAME = 'static-v544';
var CACHE_DYNAMIC_NAME = 'dynamic-v544';
var STATIC_FILES = [
'/css/app.css',
'/js/app.js',
'/js/vendor.js',
'/js/manifest.js',
'/js/utility.js',
'/offline'
];
self.addEventListener('install', function(event) {
console.log('[Service Worker] Installing service worker...', event);
event.waitUntil(
caches.open(CACHE_STATIC_NAME)
.then(function(cache) {
//console.log('[Service Worker] Precaching App Shell');
cache.addAll(STATIC_FILES)
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error);
});
})
);
});
实际上这工作正常,除非app.js 文件似乎有问题。
所以当cache.addAll(STATIC_FILES)被调用时,我得到了错误
Uncaught (in promise) DOMException: Cache.put() 遇到网络 错误
所有其他文件都缓存在静态缓存中。
我需要说,app.js 文件正在开发中,非常大(~12 MB)。它将在生产上收缩。
我的问题是:
如何更仔细地调查错误?错误消息只是给我这个消息。有没有办法获得更详细的错误信息?这个“网络错误”的原因是什么?会不会是文件太大了?或者当服务工作人员试图将文件放入缓存并因此引发错误时,可能根本没有下载文件?
非常感谢您提前提供的任何提示!
【问题讨论】:
标签: javascript caching service-worker