С чего начать делать приложение работающее в offline

«С чего начать делать приложение работающее в offline» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Начни с выбора стратегии кэширования. Service Worker — ключевая технология для оффлайн-работы. Вот базовые шаги:

  1. Зарегистрируй Service Worker в основном JS-файле:
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js');
}
  1. В файле sw.js определи кэшируемые ресурсы и стратегию:
const CACHE_NAME = 'v1';
const urlsToCache = [
  '/',
  '/styles.css',
  '/script.js',
  '/fallback.html'
];

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(cache => cache.addAll(urlsToCache))
  );
});
  1. Реализуй стратегию "Cache falling back to network":
self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => response || fetch(event.request))
  );
});

Дополнительно:

  • Используй IndexedDB для хранения данных
  • Добавь манифест веб-приложения
  • Продумай механизм синхронизации при восстановлении соединения
  • Протестируй в DevTools → Application → Service Workers