Подготовка к удалению AppCache

В Chrome 85 по умолчанию удалена поддержка AppCache. Большинству разработчиков следует отказаться от AppCache сейчас и не ждать больше.

Вслед за предыдущими объявлениями поддержка AppCache будет удалена из Chrome и других браузеров на базе Chromium. Мы призываем разработчиков отказаться от AppCache прямо сейчас, а не ждать больше.

Сервисные работники , которые широко поддерживаются в современных браузерах, предлагают альтернативу автономному режиму, который предлагал AppCache. См. Стратегии миграции .

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

«Устаревшая» функция все еще существует, но в журнале регистрируются предупреждающие сообщения, препятствующие использованию. «Удаленная» функция больше не существует в браузере.

Устаревание в незащищенных контекстах Chrome 50 (апрель 2016 г.)
Удаление из незащищенных контекстов Chrome 70 (октябрь 2018 г.)
Устаревание в безопасных контекстах Chrome 79 (декабрь 2019 г.)
Ограничение области AppCache Chrome 80 (февраль 2020 г.)
Начинается испытание «обратного» происхождения Chrome 84 (июль 2020 г.)
Удаление из безопасных контекстов , за исключением тех, которые согласились на пробную версию источника. Chrome 85 (август 2020 г.)
Полное удаление из безопасного контекста для всех с завершением пробной версии источника. 5 октября 2021 г. (примерно Chrome 95)

Исходная пробная версия

На временной шкале перечислены два предстоящих этапа удаления. Начиная с Chrome 85, AppCache больше не будет доступен в Chrome по умолчанию. Разработчики, которым требуется дополнительное время для перехода с AppCache, могут подписаться на пробную версию «обратного» происхождения , чтобы расширить доступность AppCache для своих веб-приложений. Пробная версия Origin начнется в Chrome 84 (до удаления по умолчанию в Chrome 85) и будет активна до 5 октября 2021 г. (примерно Chrome 95). На этом этапе AppCache будет полностью удален для всех, даже для тех, кто подписался на пробную версию Origin.

Чтобы принять участие в испытании «обратного» происхождения:

  1. Запросите токен для вашего происхождения.
  2. Добавьте токен на свои HTML-страницы. Есть два способа сделать это:
    • Добавьте тег <meta> origin-trial в заголовок каждой страницы. Например: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Альтернативно настройте свой сервер на возврат ответов, содержащих HTTP-заголовок Origin-Trial . Результирующий заголовок ответа должен выглядеть примерно так: Origin-Trial: TOKEN_GOES_HERE
  3. Добавьте тот же токен в манифесты AppCache. Сделайте это через новое поле в вашем манифесте в формате:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(Между ORIGIN-TRIAL и вашим токеном должна быть новая строка.)

Ниже вы можете увидеть встроенный пример проекта, который демонстрирует добавление правильных пробных токенов происхождения в файлы index.html и manifest.appcache .

Почему токены нужны в нескольких местах?

Один и тот же пробный токен происхождения должен быть связан с:

  • Все ваши HTML-страницы , использующие AppCache.
  • Все ваши манифесты AppCache отображаются через поле манифеста ORIGIN-TRIAL .

Если вы раньше участвовали в испытаниях источника, возможно, вы добавили токен только на свои HTML-страницы. Пробная версия AppCache с обратным происхождением отличается тем, что вам также необходимо связать токен с каждым из ваших манифестов AppCache.

Добавление пробного токена источника на ваши HTML-страницы позволяет использовать интерфейс window.applicationCache в ваших веб-приложениях. Страницы, не связанные с токеном, не смогут использовать методы и события window.applicationCache . Страницы без токена также не смогут загружать ресурсы из AppCache. Начиная с Chrome 85, они будут вести себя так, как будто AppCache не существует.

Добавление пробного токена источника в манифесты AppCache означает, что каждый манифест по-прежнему действителен. Начиная с Chrome 85, любые манифесты, в которых нет поля ORIGIN-TRIAL будут считаться неверными, а правила в манифесте будут игнорироваться.

Сроки и логистика пробного развертывания Origin

Хотя «обратная» пробная версия Origin официально начинается с Chrome 84, вы можете подписаться на пробную версию Origin сегодня и добавить токены в свои манифесты HTML и AppCache. По мере постепенного перехода аудитории вашего веб-приложения на Chrome 84 все добавленные вами токены вступят в силу.

Добавив токен в манифест AppCache, посетите about://appcache-internals , чтобы убедиться, что ваш локальный экземпляр Chrome (версия 84 или более поздняя) правильно связал пробный токен источника с кэшированными записями вашего манифеста. Если ваша первоначальная пробная версия распознана, вы должны увидеть поле с Token Expires: Tue Apr 06 2021... на этой странице, связанное с вашим манифестом:

Интерфейс about://appcache-internals, показывающий распознанный токен.

Тестирование перед удалением

Мы настоятельно рекомендуем вам перейти с AppCache, как только это станет возможным. Если вы хотите протестировать удаление AppCache в своих веб-приложениях, используйте флаг about://flags/#app-cache чтобы имитировать его удаление. Этот флаг доступен начиная с Chrome 84.

Стратегии миграции

Сервис-воркеры, которые широко поддерживаются в современных браузерах , предлагают альтернативу автономному режиму, обеспечиваемому AppCache.

Мы предоставили полифил , который использует сервис-воркера для репликации некоторых функций AppCache, однако он не копирует весь интерфейс AppCache. В частности, он не обеспечивает замену интерфейса window.applicationCache или связанных с ним событий AppCache.

В более сложных случаях такие библиотеки, как Workbox, предоставляют простой способ создать современного сервис-воркера для вашего веб-приложения.

Сервис-воркеры и AppCache являются взаимоисключающими.

При разработке стратегии миграции имейте в виду, что Chrome отключит функцию AppCache на любой странице, загружаемой под контролем сервисного работника. Другими словами, как только вы развернете сервис-воркера, который контролирует данную страницу, вы больше не сможете использовать AppCache на этой странице.

По этой причине мы рекомендуем не пытаться поэтапно переходить на Service Workers. Было бы ошибкой развертывать сервис-воркера, который содержит только часть вашей логики кэширования. Вы не можете использовать AppCache, чтобы «заполнить пробелы».

Аналогично, если вы развернули сервис-воркера до удаления AppCache, а затем обнаружите, что вам необходимо вернуться к предыдущей реализации AppCache, вам необходимо убедиться, что вы отменили регистрацию этого сервис-воркера. Пока в области действия данной страницы есть зарегистрированный сервисный работник, AppCache не будет использоваться.

Кроссплатформенная история

Мы рекомендуем вам связаться с конкретным поставщиком браузера, если вам нужна дополнительная информация об его планах по удалению AppCache.

Firefox на всех платформах

Firefox прекратил поддержку AppCache в выпуске 44 (сентябрь 2015 г.) и удалил его поддержку в бета-версиях и ночных сборках по состоянию на сентябрь 2019 г.

Safari на iOS и macOS

Safari прекратил поддержку AppCache в начале 2018 года.

Хром на iOS

Chrome для iOS — это особый случай, поскольку он использует другой движок браузера, чем Chrome на других платформах: WKWebView . Сервисные работники в настоящее время не поддерживаются в приложениях iOS, использующих WKWebView, а объявление об удалении AppCache в Chrome не распространяется на доступность AppCache в Chrome для iOS . Имейте это в виду, если знаете, что у вашего веб-приложения значительная аудитория Chrome для iOS.

Веб-представления Android

Некоторые разработчики приложений Android используют Chrome WebView для отображения веб-контента, а также могут использовать AppCache. Однако невозможно включить пробную версию источника для WebView. В свете этого Chrome WebView будет поддерживать AppCache без пробной версии до тех пор, пока не произойдет окончательное удаление, ожидаемое в Chrome 90.

Узнать больше

Вот несколько ресурсов для разработчиков, переходящих с AppCache на сервис-воркеров.

Статьи

Инструменты

Получение помощи

Если вы столкнулись с проблемой при использовании определенного инструмента, откройте проблему в его репозитории GitHub.

Вы можете задать общий вопрос о переходе с AppCache на Stack Overflow , используя тег html5-appcache .

Если вы столкнулись с ошибкой, связанной с удалением AppCache в Chrome, сообщите об этом с помощью системы отслеживания проблем Chromium.

Изображение героя основано на архивах Смитсоновского института, Acc. 11-007, ящик 020, изображение № MNH-4477 .