许多非REST API甚至可以用于读取数据的POST请求:典型的例子是graphql.soap和其他rpcpapi.但是,Post请求不能在一个现成的渐进式Web应用程序中缓存和脱机使用.浏览器的缓存API不会接受它们.下面是一个在IncedB中使用自定义缓存的解决方案. 幸运的是Service Worker可以截获任何异步请求,因此我们处理POST请求没有问题.缺少的是在离线时缓存它们并检索相应的响应的可能性. 在下面的示例中,我们将在indexeddb中创建一个简单的缓存,并将其用作回退(n…
service worker 离线存储 简介: 一般的网站 在我们无法访问的 时候 一般 回出现 如下 该网页无法访问 service worker 构建的网站不会出现这个错误,因为所有的 请求都是先经过 service work 在往后端发送,在没有网的情况下,就回出现 预先声明的内容,先缓存了预先声明的文件 类似 如下 创建 步骤 先注册 service-worker 声明哪些文件需要缓存起来 具体MDN写的非常清晰,我就不贴代码了 要求 只能是https环境,在本地开发的时候,localh…
很多人,包括我自己,初看Service Worker多一个Cache Storage的时候,就感觉跟HTTP长缓存没什么区别. 例如大家讲的最多的Service Worker能让网页离线使用,但熟悉HTTP缓存的朋友,会发现,把整站所有资源设置为长缓存(不带校验),也可以实现离线使用. 那么,Service Worker在缓存方面和HTTP缓存比较,有什么好处呢? 带着这个疑问,我翻阅了一些大神博客 JakeArchibald的<Caching best practices & max-ag…
浏览器缓存和Service Worker @billshooting 2018-05-06 字数 6175 Follow me on Github 标签: BOM 1. 传统的HTTP浏览器缓存策略 在一个网页的生命周期中,开发者为了缩短用户打开页面的时间,通常会设置很多缓存.其中包括了: 浏览器缓存 代理服务器缓存(CDN缓存) 服务器缓存 数据库缓存 等各种缓存.这些缓存大多数和前端没什么关系,也不由前端开发者控制,其中和前端较为密切的是浏览器缓存,但它本质上也是由服务器控制的. 在Serv…
在2014年,W3C公布了service worker的草案,service worker提供了很多新的能力,使得web app拥有与native app相同的离线体验.消息推送体验. service worker是一段脚本,与web worker一样,也是在后台运行.作为一个独立的线程,运行环境与普通脚本不同,所以不能直接参与web交互行为.native app可以做到离线使用.消息推送.后台自动更新,service worker的出现是正是为了使得web app也可以具有类似的能力. ser…
交代背景 前段时间升级了一波Google Chrome,发现我的JulyNovel站点Ctrl+F5也刷新不了,后来发现是新的Chrome已经支持Service Worker,而我的JulyNovel也满足https这个硬性条件. 之前加载过的css和js都被缓存了. 所以这里是有点小问题的,毕竟我服务器更新了,你service worker 没给我更新缓存,就说不过去了. 生命周期 特地跑到Google Develop去看了下究竟是怎么运转的. Service Worker生命周期的意义 1.…
阅读目录 1. 创建第一个service worker 及环境搭建 2. 使用service worker 对请求拦截 3. 从web获取内容 4. 捕获离线请求 5. 创建html响应 6. 理解 CacheStorage缓存 7. 理解service worker生命周期 8. 理解 service worker 注册过程 9. 理解更新service worker 10. 理解缓存管理和清除缓存 11. 理解重用已缓存的响应 回到顶部 1. 创建第一个service worker 及环境搭…
_ 阅读目录 一:页面窗口向 service worker 通信 二:service worker 向所有打开的窗口页面通信 三:service worker 向特定的窗口通信 四:学习 MessageChannel 消息通道 五:窗口之间的通信 六:从sync事件向页面传递消息 回到顶部 一:页面窗口向 service worker 通信 Service Worker 没有直接操作页面DOM的权限.但是可以通过postMessage方法和web页面进行通信.让页面操作DOM.并且这种操作是双向…
一.service worker是什么? 平常浏览器窗口中跑的页面运行的是主JavaScript线程,DOM和window全局变量都是可以访问的. Service Worker是走的另外的线程,可以理解为在浏览器背后默默运行的一个线程,或者说是独立于当前页面的一段运行在浏览器后台进程里的脚本. 它脱离浏览器窗体,异步地运行在一个完全独立的上下文环境,不会对主线程造成阻塞.在service worker中,window以及DOM都是不能访问的,但可以使用self访问全局上下文. 二.service…
原文:Service workers explained 译者:neal1991 welcome to star my articles-translator, providing you advanced articles translation. Any suggestion, please issue or contact me LICENSE: MIT 那么它是什么? Service worker正是被开发用于解决web平台上经常出现的问题和疑虑,包括: 无法解释(Extensible…