【问题标题】:PWA Cache Storage On Other Page Not Work?其他页面上的 PWA 缓存存储不起作用?
【发布时间】:2019-09-09 10:19:35
【问题描述】:

我正在为我的网站开发 pwa,并将所有资产存储到缓存存储中。 问题是当检查开发工具 -> 应用程序 -> 缓存存储是否正常并保存,但是当转到其他页面并切换到开发工具缓存存储上的离线模式时未加载!

只为保存的同一页面加载缓存存储数据? 其他页面不能访问其他页面的缓存存储吗?

 event.respondWith(
        fetch(request)
            .then(res => { // onLine
                if (request.method == 'GET') {
                    // add to cache
                    caches.open(DYNAMIC_STATIC_CACHE_NAME_VERSION)
                        .then(cache => {
                            // console.log("save to dynamic cache");
                            cache.put(request, res);
                        })
                        .catch(() => console.log("error on dynamic cache open!"));
                }
                return res.clone();
            })
            .catch(err => {
                console.log("user is offline");

                if (request.mode === 'navigate' ||
                    (request.method === 'GET' && request.headers.get('accept').includes('text/html'))
                ) {
                    return caches.match(request) || caches.match(offlineUrl);
                }
                return caches.match(request) || fetch(request);
            });

【问题讨论】:

  • 当你说不同的页面时,你是什么意思?
  • 例如我在 / 页面(项目的根目录)并将我的数据保存到缓存存储。当转到 /contact 页面并且用户 mod 处于离线缓存存储数据未加载时!但是当用户 mod 在线时 /contact 上的缓存存储正常并加载。
  • 我正在检查其他站点使用 pwa 。他们就是这样的

标签: javascript progressive-web-apps


【解决方案1】:

同一域上的页面共享缓存 API(以及 IndexedDB、LocalStorage 等)数据。

因此不同域上的页面无法访问彼此的缓存 API 数据 - 这是一种安全机制。

【讨论】:

  • 我的页面是同一个域 - 问题是用户离线的其他页面上的缓存存储。我认为是 pwa 的一个错误。
  • 我也在 localhost 上测试它
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多