Ответ 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, поэтому вам нужно реализовать оба приложения для офлайн-приложения во всех браузерах, поддерживающих стандарт.