【问题标题】:Comparison between service worker and AppCacheService Worker 和 AppCache 的比较
【发布时间】:2016-07-02 11:48:20
【问题描述】:

Service Worker 和 AppCache 的核心区别是什么。每种方法的优缺点是什么,何时更喜欢其中一种。

【问题讨论】:

    标签: html5-appcache service-worker


    【解决方案1】:

    除了Myk Melez 所说的,Service Worker 对 Application Cache 的主要好处之一是 Application Cache 仅在用户断开网络时才起作用,因此您无法管理以下情况:

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

    2- “Lie-fi”(您的手机显示已连接到 wi-fi 或信号较弱的蜂窝网络),因此实际上没有连接时,它似乎已连接。

    Service Worker 就像一个中间件,让您可以控制浏览器发出的请求,您实际上可以拦截请求并在任何您想要的地方做出响应,无论您是否已连接。所以你可以实现“离线优先”的原则。

    【讨论】:

      【解决方案2】:

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

      优点和缺点很大程度上是API设计的功能:理论上,AppCache更容易使用,但用例有限;而 Service Worker 更难使用,但更灵活。

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

      因此,首选 AppCache 的唯一原因是在尚不支持 Service Worker 的浏览器上离线应用,正如 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 的支持,因此您需要同时实现这两者,以便在支持任一标准的所有浏览器上离线您的应用。

      【讨论】:

        猜你喜欢
        • 2015-04-01
        • 2018-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多