2016-03-16 80 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或小區網絡),因此實際上沒有連接。

服務人員就像一箇中間件,可以讓您控制瀏覽器的請求,無論您是否連接,您都可以實際攔截請求並隨時響應。所以你可以實現「離線優先」原則。