- добавлена сборка Caddy с Souin, Otter и NutsDB - добавлена конфигурация dev, prod и test Docker Compose - настроено кеширование через Otter L1 и NutsDB L2 - добавлены e2e-тесты Bun для кеша, restart и purge - добавлена документация по запуску, API кеша и тестам
2.9 KiB
2.9 KiB
Чек-лист тестирования
Для автоматической проверки критичных сценариев кеша используйте e2e-tests.md:
./scripts/test-e2e.sh
Этот чек-лист остается ручной проверкой полного поведения gateway.
1. Инфраструктура
- Запуск:
docker compose -f docker-compose.dev.yml up -d --build - Оба контейнера работают:
docker psпоказывает caddy + imgproxy - Логи Caddy:
docker compose -f docker-compose.dev.yml logs caddy— нет ошибок - Логи imgproxy:
docker compose -f docker-compose.dev.yml logs imgproxy— нет ошибок - Caddy слушает порт 8888:
curl -s -o /dev/null -w "%{http_code}" http://localhost:8888/→ 200
2. Базовые запросы
- MISS (первый запрос) → 200,
Cache-Status: Souin; fwd=uri-miss; stored - HIT (повторный запрос) → 200,
Cache-Status: Souin; hit, время < 5ms - Несуществующий источник → imgproxy возвращает 500
3. Обработка изображений
resize:fit:800:0:0— изображение вписано в 800px по ширинеresize:fill:400:300:0— изображение 400x300, обрезаноcrop:200:200— обрезка 200x200q:100vsq:10— размер файла: 48931 vs 3910 (разница ~12x)format:webp→Content-Type: image/webp- Комбинированные:
resize:fit:800:0:0/g:ce/q:75/format:webp plain/{url}— прямая передача URL- base64url-encoded source — работает
4. Unsigned режим
/unsafe/resize:fit:100:0:0/...→ 200- Без
/unsafe/→ тоже 200 (ключи не заданы, подпись не проверяется)
Примечание: Когда
IMGPROXY_KEYиIMGPROXY_SALTпустые, imgproxy принимает любые URL (с и без/unsafe/)./unsafe/обязателен только при включённой подписи.
5. Кеш
- Разные размеры = разные ключи кеша (не конфликтуют)
Cache-Statusзаголовок в каждом ответе- Ключ кеша содержит полный путь:
GET-http-localhost:8888-/unsafe/...
6. Souin API (через Caddy admin :2019)
GET /souin-api/souin/— возвращает JSON-массив ключейPURGE /souin-api/souin/flush— 204, кеш сброшенPURGE /souin-api/souin/{regex}— 204, purge по regex работает
7. Останов
docker compose -f docker-compose.dev.yml down— останавливает и удаляет контейнеры