小编Fra*_*tti的帖子

Create React App PWA 服务工作线程中缓存大小限制的解决方法

我正在从空白的 CRA 模板开始开发 PWA。该应用程序需要在安装后完全离线工作,因此我利用 Workbox 的方法来预缓存所有静态内容。

不幸的是,我有一些 5 到 10 MB 之间的内容(音频文件),并且在 Create React App Service Worker 中,限制设置为 5MB(以前为 2MB - 请参阅此处))。

这些文件没有预先缓存,实际上我在构建过程中收到警告: /static/media/song.10e30995.mp3 is 5.7 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit.

遗憾的是maximumFileSizeToCacheInBytes似乎无法在 CRA SW 中进行配置:(

由于音频质量要求,我无法减小文件大小。

我还编写了一个自定义软件逻辑来预先缓存来自互联网的外部资源,并且我考虑在那里添加音频文件。但是 React 构建过程会根据文件内容向文件名添加哈希码,因此每次更新音频内容时我都需要更改 SW 代码,这并不理想。

所以我的问题是:

  • 有什么办法可以强制maximumFileSizeToCacheInBytes在 CRA 应用程序中强制限制自定义值?
  • 我正在考虑尝试在构建过程后获取哈希码并自动更新软件代码,但这对我来说不是很有说服力。
  • 有没有其他解决方案或方法来实现我需要的?

这是我的 SW 代码(默认的 CRA 代码 + 最后我的自定义逻辑)

import { clientsClaim } from 'workbox-core';
import { ExpirationPlugin } from 'workbox-expiration';
import …
Run Code Online (Sandbox Code Playgroud)

reactjs service-worker progressive-web-apps create-react-app cra

7
推荐指数
1
解决办法
3802
查看次数