Подготовка к удалению 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, могут зарегистрироваться на «обратную» пробную версию Origin, чтобы продлить доступность 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 и вашим токеном должна быть новая строка.)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Service Workers и AppCache являются взаимоисключающими

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

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

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

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

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

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

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

Safari на iOS и macOS

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

Chrome на iOS

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

Android WebViews

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

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

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

Статьи

Инструменты

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

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

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

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

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