LLwanran / front_end_studying

前端知识要点
https://llwanran.github.io/front_end_studying/
2 stars 1 forks source link

Service Worker如何保证离线缓存资源更新?(上海拍拍贷1面) #36

Open LLwanran opened 5 years ago

LLwanran commented 5 years ago

PWA特性 渐进增强:能够让每一位用户使用,无论用户使用什么浏览器,因为它是始终以渐进增强为原则 可安装:可以像原生APP在主屏幕上留有图标 离线缓存:通过Service Worker使得 Web App 也可以做到像 Native App 那样可以离线使用、消息推送的功能 安全性:通过 HTTPS 来提供服务来防止网络窥探,保证内容不被篡改

PWA核心技术 Web App Manifest – 在主屏幕添加app图标,定义手机标题栏颜色之类 Service Worker – 缓存,离线开发,以及地理位置信息处理等 App Shell – 先显示APP的主结构,再填充主数据,更快显示更好体验 Push Notification – 消息推送

Service Worker是独立于当前页面的运行在浏览器后台进程的脚本,使用条件 页面必须基于https 独立于当前网页进程,不会对主线程造成影响 不能操作DOM,但可以通过postMessage与页面通信 可以拦截作用域范围内的所有请求

Service Worker 生命周期:脚本的下载、解析、安装、激活、废弃 Service Worker 作为离线缓存的核心,它的更新意味着 App 版本的更新。 它的更新是由浏览器触发、在独立进程中进行的 Service Worker 控制着整个 App 的离线缓存。为了避免 Service Worker 缓存自己导致死锁无法升级,通常将 sw.js 本身的缓存直接交给 HTTP 服务器缓存

Service Worker 的更新算法触发条件 注册了一个新的 URL 不同的 Service Worker 功能事件被触发,比如 push, sync 等 页面导航,包括 fetch