最近我一直在与Service Workers一起工作,效果很好,但是目前我在EDGE中无法缓存 .html 文件。我正在使用自己的生成器,该生成器生成包含所有文件的数组以及基于文件大小的哈希。 安装.html文件时,SW变得多余。
Chrome,Firefox,Opera正常运行。
数组
var staticFiles = [["403.html","2cee1d060036c8da1e82669fe804aa70"],["404.html","2b4f197580132e3390828216428067ef"],["500.html","78e03a6569e35d5e95bea32b60633377"],["503.html","5e48c5ef9491db7443fad25c93be7894"],["application-settings.html","ebab51df91d97105baef9bd1f4d0c0ec"],["css/codemirror.css","df79083f846727a06e323db92e407504"]];
安装事件
self.addEventListener("install", (event) => {
event.waitUntil(
caches.open(staticCacheName).then( (cache) => {
return setCachedURL(cache).then(function(cachedUrls) {
return Promise.all(
Array.from(urlsToCacheKeys.values()).map(function(cacheKey) {
if (!cachedUrls.has(cacheKey))
{
let request = new Request(cacheKey, {credentials: 'same-origin'});
return fetch(request).then(function(response) {
if (!response.ok)
{
console.log('Request for ' + cacheKey + ' returned a ' + 'response with status ' + response.status);
} else {
return cleanResponse(response).then(function(responseToCache) {
return cache.put(cacheKey, responseToCache);
});
}
});
}
})
);
});
}).then( () => {
return self.skipWaiting();
})
);
});
如果此代码不够用,我使用的是Google略加编辑的template,我刚刚在其中添加了对动态文件的支持。