reactjs - 缓存 React/Meteor 网页
问题描述
我想加快 React/Meteor 网页的初始加载速度。几个想法之一是缓存数据。所以票价太好了......这是服务人员尝试过的。这对我来说只有在“/public/”文件夹下才有可能,但另外我想缓存来自例如的数据。"/client/" 用于缓存更多数据。这是否可以缓存来自其他文件夹的更多数据?
我做了与“第 1 步 - 添加服务人员”中描述的几乎相同的操作: https ://dev.to/jankapunkt/transform-any-meteor-app-into-a-pwa-4k44
更新: 我们仅在没有 Internet 连接的 Intranet 中使用此网页。
解决方案
使用 React 和 Meteor 的东西并不是这样工作的。预计将有一个高达 1MB 的 JS 捆绑包交付给您的客户。一个中等大小的应用程序应该查看 400-500kb 的 gzip 包大小。
不要将公用文件夹用于资产,将所有内容放在具有边缘缓存的 CDN 中,例如 AWS Cloudfront(存储在 S3 中并通过 Cloudfront 公开)或任何其他存储。在您的 CDN 中,您可以设置到期和缓存控制(max-age),客户端(浏览器)使用它来缓存资产。从 CDN 交付您的 JS 和 CSS 包。广泛使用拆分代码(最好在路由级别)。尽可能使用异步库表单地图、播放器等,而不是 NPM(内置到你的包中)。使用 PWA 环境,您将缓存捆绑文件而不是公用文件夹。您为 PWA 遵循的教程不完整且无用。它只关注如何在审核中获得绿色徽章,它没有任何用处。
还有一件事,你的 Meteor 包大小会影响 Meteor 服务器上的流量。这就是为什么您最好从 CDN 交付捆绑包和所有资产的原因。使用 service worker 缓存更多只会导致闪烁、选项卡和浏览器之间的不一致以及错误。
推荐阅读
- python - 使用 np.concatenate 连接 4 个图像(两个垂直和两个水平)
- python - 用python制作视频编辑器
- php - 根据一些哈希标签从 Instagram 获取所有帖子
- android - 如何从 Google Messages 打印整个对话
- mysql - 复制并从mysql表中获取最后一项
- join - 如何使用 Pandas 中的选项连接两个数据框
- jestjs - 当我尝试使用 NestJS、Jest 和 GraphQLFederationModule 进行测试时出错
- reactjs - 将带有图像的发布请求表单数据发送到后端
- reactjs - 我如何使用 google-cloud-storage 让公共用户下载伤害表格
- pyspark - 根据字符串列和其他列 2 & 3 Pyspark UDF 的条件转换两列