Ваш сайт работает, даже когда интернет — нет? Знакомьтесь с UpUp

06 Dec, 2022

Репозиторий давно не обновлялся

Последнее обновление было 3 года назад.

4,920
🔱 260
👥 99

Знакомая ситуация? Вы едете в метро, открываете на телефоне сайт, который только что читали, и видите... динозаврика. Или стандартное сообщение «Нет подключения к интернету». Вроде бы мелочь, но оставляет неприятный осадок. Пользователь теряет доступ к контенту, а вы — его лояльность. А что, если бы ваш сайт мог элегантно обрабатывать такие ситуации, показывая полезный контент вместо ошибки?

Сегодня мы поговорим о UpUp — крошечной JavaScript-библиотеке, которая делает именно это. Она позволяет вашему сайту работать в офлайне, следуя модной и, что важнее, полезной концепции "Offline First".

Демонстрация работы UpUp в офлайн-режиме

Что такое UpUp и зачем он нужен?

Если коротко, UpUp — это ваш простой пропуск в мир Progressive Web Apps (PWA), а точнее, в его офлайн-часть. Мы привыкли к подходу Mobile-First, но в мире, где соединение может пропасть в любой момент, на первый план выходит Offline-First. Идея в том, чтобы приложение или сайт сначала пытались загрузить контент из локального кэша и только потом обращались к сети. Это делает интерфейс отзывчивым и доступным всегда.

UpUp абстрагирует всю сложность работы с Service Workers, предоставляя простой и понятный API. Вам не нужно глубоко погружаться в жизненные циклы сервис-воркеров и тонкости API кэширования. Вместо этого вы просто говорите библиотеке: «Вот эту страницу показывай, когда интернета нет, и вот эти файлы сохрани про запас».

Кому это пригодится?

Реклама
  • Контентным проектам: новостным сайтам, блогам, сайтам с документацией. Вы можете кэшировать основные статьи или главную страницу.
  • Лендингам и сайтам-визиткам: ваш сайт будет доступен всегда, производя отличное первое впечатление на потенциальных клиентов.
  • Простым веб-приложениям: можно сохранить «скелет» приложения и основные данные, чтобы пользователь мог продолжить работу с уже загруженной информацией.

Как это работает под капотом?

Магия UpUp построена на технологии Service Workers. Это специальный тип веб-воркеров, который работает как прокси-сервер между вашим веб-приложением, браузером и сетью. Service Worker может перехватывать сетевые запросы, кэшировать ресурсы и предоставлять их из кэша, когда пользователь офлайн.

UpUp предоставляет два файла:

  1. upup.min.js — основная библиотека, которую вы подключаете на страницу.
  2. upup.sw.min.js — готовый Service Worker, который делает всю грязную работу.

Ваша задача — просто настроить их совместную работу.

Начинаем работу за 5 минут

Давайте посмотрим, насколько это просто. Допустим, у нас есть страница offline.html, которую мы хотим показывать пользователям без подключения к сети.

  1. Скачайте upup.min.js и upup.sw.min.js из репозитория и положите их в корень вашего сайта.
  2. Подключите скрипт на вашей основной странице (например, index.html):
<script src="/upup.min.js"></script>
  1. Инициализируйте UpUp, указав, что показывать в офлайне:
<script>
UpUp.start({
  'content-url': 'offline.html',
  'assets': [
    '/img/logo.png',
    '/css/style.css',
    'headlines.json'
  ]
});
</script>

Что здесь происходит?

  • 'content-url': 'offline.html' — мы говорим UpUp: «Когда пользователь будет офлайн, покажи ему содержимое этого файла». Это может быть простая страница с сообщением или даже полноценная офлайн-версия вашего сайта.
  • 'assets': [...] — здесь мы перечисляем дополнительные файлы, которые нужно закэшировать. Это могут быть стили, картинки, JSON-файлы с данными. Без них наша offline.html будет выглядеть не так, как задумано.

И это всё! Теперь, когда пользователь зайдет на ваш сайт, UpUp в фоновом режиме установит Service Worker и закэширует указанные файлы. При следующем визите, если интернет пропадет, вместо ошибки браузера он увидит вашу красивую и полезную офлайн-страницу.

Важный нюанс: HTTPS

Технология Service Workers в целях безопасности требует, чтобы ваш сайт работал по протоколу HTTPS. Это не прихоть автора библиотеки, а требование самого стандарта. К счастью, в наши дни получить бесплатный SSL-сертификат — не проблема. Сервисы вроде Let’s Encrypt или CloudFlare делают это за пару кликов.

На что еще обратить внимание?

Поддержка браузеров. UpUp работает во всех современных браузерах, поддерживающих Service Workers: Chrome 40+, Firefox 41+, Opera 27+ и других. Что самое приятное — если браузер старый и не поддерживает эту технологию, ничего не сломается. Библиотека просто не будет работать, и пользователь увидит стандартное поведение. Это называется "graceful degradation" (изящная деградация) и является признаком хорошего тона в веб-разработке.

Гибкость. В примере выше мы использовали content-url для показа целой HTML-страницы. Но UpUp также умеет работать с content, где можно передать просто строку HTML, или с service-worker-url для подключения вашего собственного, более сложного сервис-воркера.

Выводы: стоит ли пробовать?

Однозначно да. UpUp — это идеальный инструмент для тех, кто хочет улучшить пользовательский опыт своего сайта, но не готов тратить недели на изучение Service Worker API. Он не пытается решить все задачи, а фокусируется на одной, но самой важной — обеспечить базовую доступность сайта в офлайне.

UpUp особенно подойдет вам, если:

  • Вы разрабатываете статический сайт, блог или портфолио.
  • Вы хотите сделать первые шаги в мир PWA без головной боли.
  • Вам нужно быстрое и простое решение, которое «просто работает».

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

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.