微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html5 – 应用程序缓存和服务工作者

真正讨论的快速问题,因为我想得到不同人的意见.

我正在开发一个必须可以离线使用的网页应用程序.

现在要做到这一点,据了解,您将会使用应用程序缓存功能或使用服务工作者.

但是,这是我的难题.当研究应用缓存时,the MDN clearly states

Deprecated:
This feature has been removed from the Web standards. Though some browsers may still support it,it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

之后,另一个对话框建议使用服务工作者.

The Service Workers page然后继续说明服务工作者是一个实验技术,最好是参考兼容性表.

兼容性表说Safari和Internet Explorer不支持Service Worker.进一步咨询this site,并假设它是准确的,它指出微软已经开始整合服务工作者的工作,但是对于Safari来说,他们正在考虑“五年计划中的简短积极信号”.

在这是对当前项目的关注,因为它是safari兼容的必要条件,但是我也不希望它在其他浏览器中打破.

你的建议是什么?在不久的将来,只需要使用较旧的应用程序缓存和更新?确定用户浏览器并采取适当行动?或者,还有另一种我失踪的方式吗?

提前致谢.

解决方法

你是对的,appcache is becoming unsupported.

还有其他选项可以在IDB内存储数据和/或资产,例如:

> Offline Web Applications with CouchDB,PouchDB and Emeber CLI
> Ember-Pouch
> Offline apps using Ionic Framework,PouchDB and AngularJS

尝试谷歌搜索offline pouchdb ember”或“offline pouchdb angular”更多的例子.

确保离线可用性的唯一机制是服务工作者和appcache.期.

所有这些技术都依赖于您的站点是单页面应用程序,并且入口点可以访问.因此,如果您没有使用appcache或服务人员确保入口点总是可访问的,则必须回退到http缓存,并在投放资产时正确设置cache-related headers.无论如何,http缓存可以随时由UA驱逐.

面对这一决定,如果应用程序必须运行在离线和Safari中,唯一的选择是使用appcache(AFAIK,没有关于从Safari中删除appcache的消息).

为了降低风险,您可以选择将以前的技术(存储在IndexedDB上的资源)之一(除了Appcache之外)结合起来,所以您唯一缓存的是SPA的入口点.如果appcache不受支持,并且没有服务工作者的替代方案,您可以切换到缓存头替代.

无论如何,您可以使用功能检测(if(‘serviceWorker’在导航器中){…})来查看服务工作者是否可用,并将其使用.根据名为JakeCache(未测试)和others are to come的服务工作人员,有一个针对appcache的polyfill.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码
HTML5使用DOM进行自定义控制
使用HTML5 Canvas绘制阴影效果的方法
使用PHP和HTML5 FormData实现无刷新文件上传
如何解决HTML5 虚拟键盘出现挡住输入框的问题