CrawlerLens
ДокументацияОсновные концепцииКак это работает

Как работает CrawlerLens

Путь запроса

Когда бот запрашивает страницу:

1. Запрос бота
   └─▶ Nginx определяет бота по User-Agent
       └─▶ Проксирует на CrawlerLens Gateway

2. Обработка Gateway
   ├─ Валидирует заголовок X-CL-Token
   ├─ Проверяет верификацию домена
   ├─ Нормализует URL
   └─▶ Проверяет кэш Redis

3. Статус кэша
   ├─ СВЕЖИЙ: Возврат из кэша (~50мс)
   ├─ УСТАРЕВШИЙ: Возврат из кэша + фоновый ре-рендер
   └─ ПРОМАХ: Постановка задачи в очередь, ожидание (~3-5с)

4. Рендеринг (если нужен)
   ├─ Worker берёт задачу
   ├─ Открывает страницу в Chromium
   ├─ Ждёт выполнения JavaScript
   ├─ Извлекает HTML
   └─ Сохраняет в MinIO + обновляет кэш

5. Ответ
   └─▶ Gateway возвращает HTML боту

Компоненты

КомпонентПортОписание
Dashboard5173Веб-интерфейс управления
API3001REST API для dashboard
Gateway3002Точка входа для ботов
Worker-Фоновый рендерер (Chromium)
Redis6379Кэш и очередь задач
PostgreSQL5434Основное хранилище
MinIO9000Хранилище снапшотов (S3)

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

CrawlerLens использует TTL + SWR (Stale-While-Revalidate):

Время:  0         TTL              TTL+SWR            ∞
        │          │                  │               │
        ▼          ▼                  ▼               ▼
────────┬──────────┬──────────────────┬───────────────
        │  СВЕЖИЙ  │    УСТАРЕВШИЙ    │   ИСТЁКШИЙ
        │          │                  │
Действие:│ Вернуть │ Вернуть старый + │ Ждать новый
        │ из кэша │ фоновый рендер   │ рендер
        │ (~50мс) │                  │ (~3-5с)

Это обеспечивает:

  • Быстрые ответы (всегда есть что вернуть)
  • Свежий контент (фоновые обновления)
  • Нет "громового стада" (один рендер на URL)