Кабинет держит файлы интерфейса, данные и медиа на вашем устройстве и не скачивает их заново при каждом открытии. Отсюда быстрая загрузка и работа офлайн.
Два независимых уровня: кеш файлов приложения (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 |
#Обновление приложения
- Service Worker скачивает новые файлы в фоне.
- При следующем открытии показывается новая версия.
- Старые кеши удаляются.
От пользователя ничего не требуется.
#Очистка кеша
Автоматически:
- по лимиту записей: при превышении удаляются самые старые;
- по сроку: истёкшие записи удаляются при следующем запросе;
- при обновлении: кеши предыдущих версий очищаются.
#Вручную
Если нужно начать с чистого листа:
| Браузер | Как |
|---|---|
| Chrome | F12 → Application → Storage → Clear site data |
| Firefox | F12 → Хранилище → Очистить |
| Safari | Настройки → Конфиденциальность → Управление данными сайтов |
