首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceWorker无法缓存持久性资产

ServiceWorker无法缓存持久性资产
EN

Stack Overflow用户
提问于 2020-04-29 15:49:37
回答 1查看 19关注 0票数 0

到目前为止,我正在学习如何实现PWAs并理解其基本概念。我的问题是,当我试图在我的服务工作者文件中缓存静态资产时,实际上没有缓存任何东西,而是触发了这个错误。

Uncaught (in promise) TypeError: Request failed

下面是我的代码。

代码语言:javascript
复制
const staticAssets = [
    './',
    './index.php',
    './account.php',
    './css/account.css',
    './css/bootstrap-4.0.0.css',
    './css/bootstrap.min.css',
    './css/common.css',
    './css/dashboard.css',
    './css/fonts.css',
    './css/home.css',
    './lib/Magnific-Popup/dist/magnific-popup.css', ,
    './lib/sweetalerts/sweetalert.css',

    './images/logo.png',
    './repository/images/*.png',
    './repository/images/*.jpg',
    './repository/images/*.gif',


    './js/account.jsx',
    './js/app.jsx',
    './js/bootstrap-4.0.0.js',
    './js/dashboard.jsx',
    './js/jquery-3.2.1.min.js',
    './js/popper.min.js',
    './js/project.jsx',
    './js/security.jsx',

    './lib/Magnific-Popup/dist/jquery.magnific-popup.min.js',
    './lib/Magnific-Popup/dist/jquery.magnific-popup.js',
    './lib/sweetalerts/sweetalert.min.js',
    './lib/sweetalerts/sweetalert.js'
];

self.addEventListener("install",  async event => { 
    const cache = await caches.open("mystatic-assets");
    cache.addAll(staticAssets);
});

self.addEventListener("fetch", event => {
    const req = event.request;
    event.respondWith(cacheFirst(req));
});

async function cacheFirst(req) { 
    const cacheResponse = await caches.match(req);
    return cacheResponse || fetch(req);
}```


What am I doing wrong?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-02 05:56:04

首先,我必须指出,如果您作为静态URL提供的路径中存在错误或拼写错误,它将失败,并且不会缓存任何内容。

1/试试这个

代码语言:javascript
复制
self.addEventListener("install", event => {
    event.waitUntil(
      caches.open("mystatic-assets").then(cache => {
        cache.addAll(staticAssets);
      })
    );
});

第二点

在fetch事件中

代码语言:javascript
复制
self.addEventListener("fetch", event => {
    const req = event.request;
    event.respondWith(cacheFirst(req));
});

function cacheFirst(req) {
    return chaches.match(req) || fetch(req)
}

试试这个,然后告诉我

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61496750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档