在开发 PWA 时,我使用 Service Worker 下载文件并将其存储在缓存中。 我注意到所有文本资源(json、js、css、html)的内容长度均为 0,因为它们没有被缓存。 而所有其他文件(图像、声音、字体)都有有效的内容长度。
我使用的是 Chrome 89.0.4389.114。
我注意到的唯一共同点是 Accept-Encoding: gzip 所以我决定关闭压缩。 现在它正在发挥作用。所有文件的长度都不为 0。
解决方法:
我在服务器端使用 Spring Boot,因此要关闭它,您需要将属性设置为 false。
server.compression.enabled=false
在 precacheAndRoute 之前添加此ignoreVary选项对我有用!
import { getOrCreatePrecacheController } from 'workbox-precaching/utils/getOrCreatePrecacheController';
getOrCreatePrecacheController().strategy.matchOptions = {
ignoreVary: true,
};
precacheAndRoute([...])