Сравнение между сервисным работником и AppCache

Каковы основные различия между сервисным работником и AppCache. Каковы плюсы и минусы каждого и когда предпочитают друг друга.

Ответ 1

Основное различие заключается в том, что AppCache - это высокоуровневый декларативный API, с помощью которого вы указываете набор ресурсов, которые вы хотите кэшировать в браузере; тогда как Service Worker - это низкоуровневый, обязательный, управляемый событиями API, с помощью которого вы пишете script, который может перехватывать события выборки и кэшировать их ответы вместе с другими вещами (например, отображать push-уведомления).

Преимущества и недостатки в значительной степени зависят от дизайна API: теоретически AppCache проще в использовании, но имеет более ограниченные варианты использования; тогда как Service Worker сложнее использовать, но более гибко.

Тем не менее, AppCache считается трудноиспользуемым на практике из-за плохого дизайна (см. Кэш приложения - Douchebag для получения списка проблем с дизайном). И он устарел, поэтому он удаляется из браузеров (за Использование кэша приложений).

Таким образом, единственная причина, по которой предпочтение AppCache заключается в отключении приложения в браузерах, которые еще не поддерживают Service Worker, как рекомендует Kenneth Ormandy в Dont Wait for ServiceWorker: добавление автономной поддержки с помощью однолинейная.

Сравнить Могу ли я использовать сервис-работников? для Могу ли я использовать автономные веб-приложения?, чтобы увидеть различия в браузере. Но обратите внимание, что браузеры, поддерживающие Service Worker, такие как Chrome и Firefox, устраняют поддержку AppCache, поэтому вам нужно реализовать оба приложения для офлайн-приложения во всех браузерах, поддерживающих стандарт.

Ответ 2

Кроме того, что Myk Melez сказал, одним из основных преимуществ рабочих-служб для кэша приложений является то, что кэш приложений работает только тогда, когда пользователь отключен от сети, поэтому вы не можете управлять ситуациями:

1- "медленная сеть" - ваш сигнал соединения прочен, однако некоторые внешние объекты (сервер, маршруты и т.д.) задерживают передачу в ваше конкретное приложение.

2- "Lie-fi" (ваши телефонные дисплеи подключены к Wi-Fi или к сети со слабым сигналом), поэтому он, кажется, подключен, когда на самом деле нет.

Сервис-работники - это как средство среднего уровня, позволяющее контролировать запросы, которые делает браузер, вы можете фактически перехватить запрос и отвечать везде, где хотите, независимо от того, подключены вы или нет. Таким образом, вы можете реализовать принцип "offline first".