服务工作者和AppCache之间的比较

bis*_*wpo 14 html5-appcache service-worker

服务工作者和AppCache之间的核心区别是什么.每个人的优缺点是什么,何时优先选择另一个人.

Myk*_*lez 25

主要区别在于AppCache是​​一个高级声明式API,您可以使用它来指定浏览器要缓存的资源集; 而Service Worker是一个低级,命令式,事件驱动的API,您可以使用该API编写一个脚本,该脚本可以拦截获取事件并缓存其响应以及执行其他操作(如显示推送通知).

优点和缺点主要是API设计的功能:从理论上讲,AppCache更易于使用,而用例更有限; 而Service Worker更难使用,但更灵活.

然而,由于设计不佳,AppCache在实践中被认为很难使用(请参阅Application Cache Is A Douchebag以获取设计问题列表).它已被弃用,因此它将从浏览器中删除(每个使用应用程序缓存).

因此,偏爱AppCache的唯一理由是在尚不支持Service Worker的浏览器上使应用程序脱机,正如Kenneth Ormandy建议的那样,不要等待Se​​rviceWorker:使用One-Line添加离线支持.

比较我可以使用服务工作者吗?我可以使用离线Web应用程序?看看浏览器支持的差异.但请注意,支持Service Worker的浏览器(如Chrome和Firefox)正在删除对AppCache的支持,因此您需要同时实现这两种方式,以便在支持这两种标准的所有浏览器中使您的应用脱机.


Isr*_*cia 5

除了Myk Melez所说的,Service Workers对应用程序缓存的主要好处之一是Application Cache仅在用户与网络断开连接时才有效,因此您无法管理以下情况:

1-"慢速网络" - 您的连接信号很强,但是某些外部实体(服务器,路由等)正在延迟传输到您的特定应用程序.

2-"Lie-fi"(你的手机显示连接到一个wi-fi或一个低信号的蜂窝网络)所以它实际上似乎是连接的.

服务工作者就像一个中间件,可以控制浏览器发出的请求,无论您是否连接,您实际上都可以拦截请求并在任何地方做出响应.因此,您可以实施"离线优先"原则.