工作箱:构建项目时无法缓存所有文件
Workbox: cannot cache all files when build project
我使用 Vuejs
并使用 workbox-webpack-plugin
以使我的网站脱机,我想缓存一个包含我所有文件(3 个文件)的文件夹,如下图所示,但是当我构建我的项目(使用 Laravel-mix
)。 main.js
(包含 Vue 的所有内容)不能缓存在 service-woker.js
中。我尝试了一些方法来解决这个问题,但这些都不起作用。
有没有人遇到这个问题,有什么解决办法吗,万分感谢!
->>
为什么要手动处理?即使您可以使用
缓存所有静态资产
workbox.precaching.precacheAndRoute(self.__precacheManifest || []);
对于动态请求,请使用带有策略的路由:-
workbox.routing.registerRoute('end point url', workbox.strategies.networkFirst({
cacheName: 'cache-name'
}));
编辑:前段时间,GitHub 上的一个人帮我解决了这个问题。
这是因为有一个名为 maximumFileSizeToCacheInBytes
的 Workbox 配置 属性。默认情况下它设置为 2MB,这意味着它只会缓存小于(或等于)2MB 的文件。我构建的一些文件比那个大。我只需要增加 maximumFileSizeToCacheInBytes
来解决问题,并将那些较大的文件包含在生成的服务工作者中。
我更新的 Workbox 配置如下所示:
plugins: [
new workboxPlugin({
globDirectory: DIST_DIR,
globPatterns: ['js/*.{html,js,css}'],
maximumFileSizeToCacheInBytes: 5000000, // <-- Added (5 MB)
swDest: path.join(DIST_DIR, 'sw.js'),
}),
]
我使用 Vuejs
并使用 workbox-webpack-plugin
以使我的网站脱机,我想缓存一个包含我所有文件(3 个文件)的文件夹,如下图所示,但是当我构建我的项目(使用 Laravel-mix
)。 main.js
(包含 Vue 的所有内容)不能缓存在 service-woker.js
中。我尝试了一些方法来解决这个问题,但这些都不起作用。
有没有人遇到这个问题,有什么解决办法吗,万分感谢!
->>
为什么要手动处理?即使您可以使用
缓存所有静态资产workbox.precaching.precacheAndRoute(self.__precacheManifest || []);
对于动态请求,请使用带有策略的路由:-
workbox.routing.registerRoute('end point url', workbox.strategies.networkFirst({
cacheName: 'cache-name'
}));
编辑:前段时间,GitHub 上的一个人帮我解决了这个问题。
这是因为有一个名为 maximumFileSizeToCacheInBytes
的 Workbox 配置 属性。默认情况下它设置为 2MB,这意味着它只会缓存小于(或等于)2MB 的文件。我构建的一些文件比那个大。我只需要增加 maximumFileSizeToCacheInBytes
来解决问题,并将那些较大的文件包含在生成的服务工作者中。
我更新的 Workbox 配置如下所示:
plugins: [
new workboxPlugin({
globDirectory: DIST_DIR,
globPatterns: ['js/*.{html,js,css}'],
maximumFileSizeToCacheInBytes: 5000000, // <-- Added (5 MB)
swDest: path.join(DIST_DIR, 'sw.js'),
}),
]