---
title: "Офлайн-режим tuk-tuk.online: кеш данных и очередь действий"
nav_title: "Офлайн-режим"
url: https://docs.tuk-tuk.online/pwa/offline
markdown: https://docs.tuk-tuk.online/pwa/offline.md
section: "Приложение и офлайн"
description: "Как кабинет tuk-tuk.online работает без интернета: кеш данных 25 МБ в IndexedDB, очередь действий с отправкой после восстановления сети, оптимистичные ответы интерфейса, индикатор соединения."
keywords: ["офлайн режим", "работа без интернета", "кеш данных", "очередь мутаций", "оптимистичные ответы", "IndexedDB", "синхронизация данных", "offline mode"]
lang: ru
product: tuk-tuk.online
app: https://lk.tuk-tuk.online
api_base: https://back.tuk-tuk.online
---

> [!AI] Кратко
> Офлайн-режим кабинета tuk-tuk.online: данные хранятся в IndexedDB (до 25 МБ), действия без сети копятся в очереди и отправляются после восстановления связи, интерфейс обновляется оптимистично, внизу экрана показывается индикатор соединения.
>
> - Кеш данных: IndexedDB, до 25 МБ, сохранение каждые 500 мс после изменений, восстановление при открытии.
> - При открытии сначала показываются сохранённые данные, затем в фоне подтягиваются свежие.
> - Очередь действий без ограничения объёма; хранит запрос, данные и время; после восстановления сети действия уходят на сервер по одному, затем очередь очищается.
> - Оптимистичные ответы: статус задачи, теги, заметки, перемещение по канбану.
> - Сеть считается недоступной по событиям браузера или после 2 и более неудачных запросов подряд; статус-бар «Нет соединения» с кнопкой «Повторить» исчезает через 3 секунды после восстановления.
>
> Связанные страницы: https://docs.tuk-tuk.online/pwa, https://docs.tuk-tuk.online/pwa/caching, https://docs.tuk-tuk.online/pwa/install, https://docs.tuk-tuk.online/tasks/kanban

# Офлайн-режим

Без интернета кабинет продолжает показывать данные и принимать действия. Всё сделанное офлайн встаёт в очередь и уходит на сервер, как только связь вернётся.

Три механизма: кеш данных на устройстве, очередь действий и оптимистичные ответы интерфейса.

## Из чего состоит

| Компонент | Роль | Объём |
|---|---|---|
| Кеш данных | Копия ваших данных на устройстве | До 25 МБ |
| Очередь действий | Действия, сделанные без сети | Без ограничений |
| Оптимистичные ответы | Интерфейс обновляется сразу, не дожидаясь сервера | Не применимо |

## Кеш данных

Загруженные данные сохраняются на устройстве: список диалогов и контактов, последние сообщения, настройки каналов, задачи, записи календаря и другое.

| Параметр | Значение |
|---|---|
| Хранилище | IndexedDB, встроенная база данных браузера |
| Максимальный размер | 25 МБ |
| Частота сохранения | Каждые 500 мс после изменений |
| Восстановление | Автоматически при открытии приложения |

Данные в IndexedDB переживают закрытие вкладки и перезагрузку компьютера.

### При открытии приложения

1. Приложение проверяет, есть ли сохранённые данные.
2. Если есть, показывает их сразу, не дожидаясь сервера.
3. В фоне запрашивает свежие данные.
4. Обновляет экран, если что-то изменилось.

Поэтому кабинет открывается быстро даже на медленном интернете.

## Очередь действий

Действие без интернета (сменить статус задачи, отправить сообщение) не теряется: оно сохраняется в очередь и ждёт сети.

```text
Вы нажали «Выполнить задачу» (без интернета)
                │
                ▼
  Приложение проверяет: есть интернет?
                │
              Нет
                │
                ▼
  Действие   → сохраняется в IndexedDB
  Интерфейс  → обновляется сразу (оптимистичный ответ)
                │
        ... время проходит ...
                │
  Интернет появился
                │
                ▼
  Очередь → отправляет все действия на сервер
  Данные  → обновляются с сервера
```

Для каждого отложенного действия хранятся:

| Поле | Содержимое |
|---|---|
| Запрос | Какое действие: создать задачу, изменить статус и так далее |
| Данные | Параметры: текст, ID, новые значения |
| Время | Когда действие совершено |

### Когда сеть вернулась

1. Браузер сообщает приложению о восстановлении сети.
2. Приложение читает очередь из IndexedDB.
3. Действия отправляются на сервер по одному, в порядке очереди.
4. Активные данные обновляются с сервера.
5. Очередь очищается.

## Оптимистичные ответы

Интерфейс показывает результат действия сразу, а запрос уходит на сервер в фоне.

Без них: нажали «Задача выполнена», подождали 0.5–2 секунды, экран обновился. С ними: нажали, экран обновился мгновенно, запрос ушёл в фоне. Если сервер вернул другой результат, экран обновится ещё раз.

Где используются:

- смена статуса задачи;
- добавление и удаление тегов;
- редактирование заметок;
- перемещение задач на канбан-доске;
- другие быстрые действия.

## Как приложение понимает, что сети нет

| Способ | Как работает |
|---|---|
| События браузера | Браузер сообщает о потере и восстановлении сети |
| Подсчёт ошибок | 2 и более запросов подряд не прошли: сеть считается недоступной |

### Индикатор

Когда интернет пропал, внизу экрана появляется статус-бар «Нет соединения» с кнопкой «Повторить». После восстановления сети бар исчезает через 3 секунды.

Как кешируются файлы интерфейса: [Скорость и кеш](https://docs.tuk-tuk.online/pwa/caching).
