Приложение и офлайн

Скорость и кеш

Кратко

Кеширование в кабинете tuk-tuk.online: Service Worker предзагружает файлы интерфейса, для API используется стратегия «сеть в приоритете» с таймаутом 3 секунды, для шрифтов, файлов, изображений и медиа «кеш в приоритете»; обновления применяются в фоне.

  • Два уровня: файлы приложения (Service Worker и Cache API) и данные (Apollo Cache и IndexedDB).
  • GraphQL и REST API: сеть в приоритете, таймаут 3 с, срок 7 дней, до 200 записей.
  • Шрифты: кеш в приоритете, 1 год, 20 записей. Файлы и изображения: 90 дней, 500 записей. Медиа: 30 дней, 100 записей.
  • Обновление: новые файлы скачиваются в фоне, применяются при следующем открытии, старые кеши удаляются.
  • Ручная очистка: Chrome F12 → Application → Storage → Clear site data; Firefox F12 → Хранилище → Очистить; Safari → Конфиденциальность → Управление данными сайтов.
На этой странице

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

Два независимых уровня: кеш файлов приложения (Service Worker) и кеш данных (Apollo Cache в IndexedDB).

#Два уровня кеша

УровеньЧто хранитТехнология
Файлы приложенияHTML, CSS, JavaScript, иконки, шрифтыService Worker и Cache API
ДанныеДиалоги, контакты, задачи, настройкиApollo Cache и IndexedDB

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

#Предзагрузка

При первом посещении Service Worker скачивает и сохраняет основные файлы приложения. Дальше:

  • интерфейс грузится из кеша, а не с сервера;
  • при недоступном сервере интерфейс всё равно открывается;
  • обновления скачиваются в фоне и применяются при следующем открытии.

#Стратегии кеширования

СтратегияКак работаетДля чего
Сеть в приоритетеЗапрос к серверу; если ответа нет за 3 секунды, ответ берётся из кешаДанные, которые должны быть свежими
Кеш в приоритетеСначала кеш; если записи нет, запрос к серверуФайлы, которые редко меняются
РесурсСтратегияСрок храненияЛимит записей
Шрифты (Google Fonts)Кеш в приоритете1 год20
GraphQL APIСеть в приоритете, таймаут 3 с7 дней200
REST APIСеть в приоритете, таймаут 3 с7 дней200
Загруженные файлыКеш в приоритете90 дней500
ИзображенияКеш в приоритете90 дней500
Медиа (видео, аудио)Кеш в приоритете30 дней100

#Обновление приложения

  1. Service Worker скачивает новые файлы в фоне.
  2. При следующем открытии показывается новая версия.
  3. Старые кеши удаляются.

От пользователя ничего не требуется.

#Очистка кеша

Автоматически:

  • по лимиту записей: при превышении удаляются самые старые;
  • по сроку: истёкшие записи удаляются при следующем запросе;
  • при обновлении: кеши предыдущих версий очищаются.

#Вручную

Если нужно начать с чистого листа:

БраузерКак
ChromeF12 → Application → Storage → Clear site data
FirefoxF12 → Хранилище → Очистить
SafariНастройки → Конфиденциальность → Управление данными сайтов