Каковы основные различия между сервисным работником и 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".