首页 > 解决方案 > Service Worker 不会缓存 golang 服务器在“/”上提供的 index.html

问题描述

我正在和一个试图缓存我的 index.html 的服务人员一起玩。我正在通过

http.HandleFunc("/sw", handle.SW)
http.HandleFunc("/", handle.Index)

我的服务工作者缓存看起来像这样

self.addEventListener('install', (event) => {
    self.skipWaiting();
    event.waitUntil(async function () {
        const cache = await caches.open(CACHE_VERSION);
        await cache.addAll([
            '/',
            '/static/merged.css',
            '/static/merged.js',
            '/favicon.ico'
        ]);
    }());
});

如果没有 service worker,开发者工具中的我的网络选项卡显示 index.html 的大小为 4.5 KB,时间为 46 毫秒。

在此处输入图像描述

现在使用服务工作者merged.css,merged.js 和favicon.ico 被缓存,但我的索引有两个条目。一个来自服务人员,一个大小为 4.5 KB,时间为 48 毫秒。

在此处输入图像描述

所以我猜 index.html 没有被缓存,我不知道该怎么做。

标签: javascriptgoserviceworker

解决方案


从您上传的屏幕截图中可以看出,获取 index.html 的请求是由名为 sw.js 的脚本发起的,确切的代码放在第二行。如果这确实是您代码中的 service-worker,请仔细检查并找出发出此请求的原因。


推荐阅读