2016-03-16 43 views

回答

21

主要区别在于AppCache是​​一个高级的声明式API,可以用它指定您希望浏览器缓存的一组资源;而服务工作者是一个低级的,势在必行的事件驱动的API,通过它你可以编写一个脚本,拦截获取事件并缓存响应以及执行其他操作(如显示推送通知)。

优点和缺点在很大程度上是API设计的一个功能:理论上,AppCache更易于使用,同时具有更多有限的用例;而服务工作者很难使用,但更灵活。

尽管如此,由于设计不佳,AppCache在实践中被认为很难使用(有关设计问题的列表,请参阅Application Cache Is A Douchebag)。它已被弃用,所以它从浏览器中删除(根据Using the application cache)。

因此,更喜欢AppCache的唯一原因是在尚不支持服务工作者的浏览器上对应用程序进行脱机,正如Kenneth Ormandy在Don’t Wait for ServiceWorker: Adding Offline Support with One-Line中的建议。

比较Can I use Service Workers?Can I use Offline web applications?查看浏览器支持的差异。但请注意,支持Service Worker的浏览器(例如Chrome和Firefox)将取消对AppCache的支持,因此您需要同时在所有支持标准的浏览器上将应用程序脱机。

3

另外的什么Myk Melez说,一个服务人员针对应用程序缓存的主要好处是,当用户从网络断开的应用程序缓存才能正常运行,所以你不能管理的情况:

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

2-“Lie-fi”(您的手机显示器连接到信号较低的wi-fi或小区网络),因此实际上没有连接。

服务人员就像一个中间件,可以让您控制浏览器的请求,无论您是否连接,您都可以实际拦截请求并随时响应。所以你可以实现“离线优先”原则。