PWA: манифест и устанавливаемые веб-приложения – основы
Коротко: Прогрессивное веб-приложение — сайт, который можно установить как приложение: с манифестом, service worker и HTTPS он получает значок, полноэкранный режим, работу офлайн и фоновые службы.
Подробнее: PWA объединяют веб и приложение: одна кодовая база, магазин приложений не нужен, обновления мгновенно. Их можно установить (главный экран/рабочий стол), они отчасти работают офлайн и могут отправлять уведомления.
Подробности
Три составляющие
- HTTPS (кроме localhost).
- Манифест веб-приложения (
manifest.webmanifest): имя, значки, цвета, начальный URL, режим отображения:
{
"name": "Emzett", "short_name": "Emzett"
"start_url": "/", "display": "standalone"
"background_color": "#0b0b10", "theme_color": "#0b0b10"
"icons": [{"src":"/icon-192.png","sizes":"192x192","type":"image/png"}
{"src":"/icon-512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}]
}В HTML: <link rel="manifest" href="/manifest.webmanifest">.
3. Service worker: фоновый скрипт, способный перехватывать запросы, кэшировать и отдавать офлайн-страницы.
Service worker и кэширование
Типичные стратегии: cache first (статические файлы), network first (актуальные данные, запасной вариант из кэша), stale-while-revalidate (сразу старое, в фоне заново). Важно: версионируйте кэши, удаляйте старые кэши, уведомление об обновлении («Доступна новая версия»), не кэшируйте чувствительные данные, не повторяйте вслепую запросы POST. Инструменты: Workbox, плагины фреймворков. Отлаживайте в инструментах разработчика браузера в разделе Application.
Возможности и ограничения
Возможно: установка, использование офлайн, push-уведомления (на iOS из установленного PWA), фоновая синхронизация, камера, местоположение, доступ к файловой системе, функция «Поделиться». Ограничения: ограничения на iOS (лимит хранилища, меньше API), нет полного доступа к функциям устройства, как у нативных приложений, обнаруживаемость без магазина. Конфиденциальность: push и фоновая синхронизация требуют согласия.
Проверка и практика
Тестируйте с Lighthouse (критерии PWA), chrome://inspect, «Добавить на главный экран». Предусмотрите офлайн-страницу-запас, maskable-значки, theme_color, скриншоты в манифесте для диалога установки. Проверяйте обновления: обновления service worker вступают в силу только после закрытия всех вкладок, если не задан skipWaiting. Прочитайте также про offline-first и фоновую синхронизацию.
См. также: Offline-first и фоновая синхронизация, Service worker, Веб-хранилище, Lighthouse