美文网首页
3.7 离线应用

3.7 离线应用

作者: 柠檬与断章 | 来源:发表于2019-11-28 09:39 被阅读0次

    3.7 离线应用

    问题一:什么是离线应用?

    离线应用是指通过离线缓存技术,让资源在第一次被加载后缓存在本地,下次访问它时就直接返回本地的文件,就算没有网络连接。

    问题二:离线应用优点?

    在没有网络的情况下也能打开网页。

    由于部分被缓存的资源直接从本地加载,对用户来说可以加速网页加载速度,对网站运营者来说可以减少服务器压力以及传输流量费用。

    问题三:离线应用核心是什么?

    离线应用的核心是离线缓存技术,历史上曾先后出现2种离线离线缓存技术,它们分别是:

    AppCache又叫 Application Cache,目前已经从 Web 标准中删除,请尽量不要使用它。

    Service Workers是目前最新的离线缓存技术,是Web Worker的一部分。 它通过拦截网络请求实现离线缓存,比 AppCache 更加灵活。它也是构建PWA应用的关键技术之一。

    问题四:什么是 Service Workers?

    Service Workers是一个在浏览器后台运行的脚本,它生命周期完全独立于网页。它无法直接访问 DOM,但可以通过 postMessage 接口发送消息来和 UI 进程通信。 拦截网络请求是 Service Workers 的一个重要功能,通过它能完成离线缓存、编辑响应、过滤响应等功能。

    问题五:Service Workers兼容性?

    目前 Chrome、Firefox、Opera 都已经全面支持 Service Workers,但对于移动端浏览器就不太乐观了,只有高版本的 Android 支持。 由于 Service Workers 无法通过注入 polyfill 去实现兼容,所以在你打算使用它前请先调查清楚你的网页的运行场景。

    判断浏览器是否支持 Service Workers 的最简单的方法是通过以下代码:

    // 如果 navigator 对象上存在 serviceWorker 对象,就表示支持if(navigator.serviceWorker){// 通过 navigator.serviceWorker 使用}

    问题六:如何注册Service Workers?

    要给网页接入 Service Workers,需要在网页加载后注册一个描述 Service Workers 逻辑的脚本。 代码如下:

    if(navigator.serviceWorker){window.addEventListener('DOMContentLoaded',function(){// 调用 serviceWorker.register 注册,参数 /sw.js 为脚本文件所在的 URL 路径navigator.serviceWorker.register('/sw.js');});}

    一旦这个脚本文件被加载,Service Workers 的安装就开始了。这个脚本被安装到浏览器中后,就算用户关闭了当前网页,它仍会存在。 也就是说第一次打开该网页时 Service Workers 的逻辑不会生效,因为脚本还没有被加载和注册,但是以后再次打开该网页时脚本里的逻辑将会生效。

    在 Chrome 中可以通过打开网址chrome://inspect/#service-workers来查看当前浏览器中所有注册了的 Service Workers。

    相关文章

      网友评论

          本文标题:3.7 离线应用

          本文链接:https://www.haomeiwen.com/subject/snuxictx.html