当前位置:网站首页>PWA 应用 Service Worker 缓存的一些可选策略和使用场景
PWA 应用 Service Worker 缓存的一些可选策略和使用场景
2022-08-03 15:19:00 【汪子熙】
SAP 电商云 Spartacus UI 提供了将站点作为 PWA 运行的功能。 这提高了用户性能,改善了用户体验,因为它添加了另一个缓存层,并减少了服务器端渲染 (SSR) 服务的负载。
PWA 的工作方式是,对于定义的应用程序文件列表,它会根据文件的内容生成文件哈希。 此哈希用于在客户端浏览器中决定文件是否已更改。比如重新部署的情况下,这些文件应该重新加载。
- Network only:内容必须始终是最新的,适用于电商的付款和结帐,余额报表等场景。
- Network falling back to cache:优先提供最新的内容。 但是,如果网络出现故障或不稳定,则可以提供稍旧的内容。适用场景有及时的数据,价格和费率(需要免责声明),订单状态等。
- Stale-while-revalidate:可以立即提供缓存内容,但以后应该使用更新的缓存内容。适用场景有新闻提要,产品列表页面,留言等。
- Cache first, fall back to network:内容是非关键的,可以从缓存中提供以提高性能,但 Service Worker 应偶尔检查更新。适用于 App shells 和 Common resources.
- Cache only: 适用于内容极少发生变化的静态资源。
下面是 SAP 电商云 Spartacus UI ngsw-config.json 文件的内容:
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js",
"/manifest.webmanifest"
]
}
}
],
"dataGroups": [
{
"name": "basesites",
"urls": [
"*/basesites?fields=baseSites\\(uid,defaultLanguage\\(isocode\\),urlEncodingAttributes,urlPatterns,stores\\(currencies\\(isocode\\),defaultCurrency\\(isocode\\),languages\\(isocode\\),defaultLanguage\\(isocode\\)\\),theme,defaultPreviewCatalogId,defaultPreviewCategoryCode,defaultPreviewProductCode\\)*"
],
"cacheConfig": {
"maxSize": 1,
"maxAge": "1d",
"strategy": "performance"
}
}
]
}
ngsw-config.json 配置文件指定 Angular Service Worker 应该缓存哪些文件和数据 URL,以及它应该如何更新缓存的文件和数据。Angular CLI 在 ng build 期间会读取这个配置文件。
./node_modules/.bin/ngsw-config ./dist/<project-name> ./ngsw-config.json [/base/href]
该配置文件使用 JSON 格式。 所有文件路径都必须以 / 开头,它对应于部署目录——通常是 CLI 项目中的 dist/<project-name>。
文件里允许出现的特殊符号(通配符)的含义:
**: 匹配 0 个或多个路径段*: 匹配 0 个或多个字符,不包括 /?: 只匹配一个字符,不包括 /!:prefix 将模式标记为否定,这意味着只包含与模式不匹配的文件
一些例子:
/**/*.html: 匹配所有 HTML 文件/*.html:匹配根目录下的 HTML 文件!/**/*.map: 排除所有的 sourcemaps
边栏推荐
- [The Beauty of Software Engineering - Column Notes] 36 | What exactly do DevOps engineers do?
- 交大医学院临床研究中心如何将 ModelWhale 应用于临床医生教学、研究丨数据科学 x 临床医学
- 方舟开服工具、服务器教程win
- 内心的需求
- 如何用二分法搜索、查找旋转数组中是否含有某个(目标)值? leetcode 81.搜索旋转排序数组
- DeepLink在转转的实践
- 随笔-UGUI中LayoutGroup来自适应长度图片长度
- R7 6800H+RTX3050+120Hz 2.8K OLED屏,无畏Pro15 2022开启预售
- Windows服务器如何防止黑客入侵的安全设置
- 冒烟测试冒烟测试
猜你喜欢

QT之Mysql驱动

2021年12月电子学会图形化三级编程题解析含答案:分身术

cnpm 安装成功后提示不是内部和外部命令,也不是可运行的命令解决方案

【指针内功修炼】函数指针 + 函数指针数组 + 回调函数(二)

南京一研究所回应招聘硕士保安:负责安全生产等,48人选1

技术分享 | 接口自动化测试如何搞定 json 响应断言?

A high-performance creation book, ASUS Dreadnought Pro15 2022 is completely enough for daily photo editing and editing!

方舟开服教程win

又有大厂员工连续加班倒下/ 百度搜狗取消快照/ 马斯克生父不为他骄傲...今日更多新鲜事在此...

How to use redis
随机推荐
程序员面试必备PHP基础面试题 – 第二十天
Windows服务器如何防止黑客入侵的安全设置
2021年12月电子学会图形化二级编程题解析含答案:消灭蝙蝠
有希望就是好的
【周报】2022年7月24日
The general trend, another key industry related to Sino-US competition, has reached a critical moment
HDU 1160 FatMouse's Speed(最长递减子序列变形)
冒烟测试冒烟测试
一次做数据报表的踩坑经历,让我领略了数据同步增量和全量的区别
不安装运行时运行.NET程序
【FPGA教程案例44】图像案例4——基于FPGA的图像中值滤波verilog实现,通过MATLAB进行辅助验证
指令重排以及案例
问题8:对朋友圈进行用例设计
Internship Road: Documenting Confusion in My First Internship Project
ubiquant量化竞赛
MMA安装及使用优化
Currency ATM: Solana Wallet Has Unknown Security Vulnerability, A Large Number Of Users' Digital Assets Are Stolen
php类的析构函数:__destruct
程序员面试必备PHP基础面试题 – 第二十一天
一个在浏览器中看到的透视Cell实现