perf: establish frontend performance baseline
This commit is contained in:
+1
-1
@@ -23,7 +23,7 @@
|
||||
- [ ] **Q03 · Целостность ссылок.** Проверять исходные ссылки только во время разрешённого планового обращения к площадке, разделяя `missing`, `temporary_error` и `blocked`; не создавать дополнительный сетевой цикл.
|
||||
- [x] **Q04 · Состояния ожидания.** Асинхронные admin-очереди получили каркасные карточки, `aria-busy`, очистку при ошибке и поддержку `prefers-reduced-motion`. Публичные страницы остаются SSR и не показывают искусственный skeleton; форма уже блокирует повторную отправку и сообщает «Отправка…».
|
||||
- [x] **Q05 · Базовая визуальная матрица.** Главная проверена в браузере на 320/390/768/1280 px, ключевые public-маршруты — на 320 px; удалён корневой `min-width`, создававший горизонтальный scroll. Добавлен E2E-контракт для `/`, records, report, waterbodies, status и видимого skip-link. Ширина 320 px также покрывает reflow, эквивалентный 200% zoom для окна 640 px. Расширенная матрица наполненных/длинных/error-состояний остаётся постоянной частью приёмки UI, а не отдельным блокером.
|
||||
- [ ] **Q06 · Performance baseline.** Повторить Lighthouse на production-сборке после оптимизации hero; записать LCP/CLS/INP и бюджет в документацию.
|
||||
- [x] **Q06 · Performance baseline.** На локальной production-сборке после оптимизации hero: performance 100, LCP 1,66 с, FCP 1,15 с, CLS 0,023, TBT 9 мс. Устранены найденные Lighthouse проблемы контраста и accessible name; методика и бюджеты записаны в [performance-baseline.md](performance-baseline.md). Полевой INP измеряется только после запуска.
|
||||
- [ ] **Q07 · Нагрузочная методика.** Подготовить воспроизводимый сценарий измерения p95 для activity, records, staging и moderation без объявления результатов до запуска на целевом сервере.
|
||||
- [ ] **Q08 · Политика MinIO.** Ограничить app credentials одним bucket и добавить безопасную автоматическую проверку policy; root credentials оставить только bootstrap-задаче.
|
||||
- [ ] **Q09 · Release-процедура.** Разделить миграционный/release-шаг и запуск приложения либо документировать выбранную стратегию отката; проверить upgrade с предыдущей ревизии на копии данных.
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Performance baseline
|
||||
|
||||
Последняя проверка: 12 сентября 2026. Lighthouse 13.4.1 запускался локально против Astro SSR production-сборки, с доступным локальным API и стандартным mobile throttling. Это лабораторная проверка кода, а не прогноз скорости production-сервера.
|
||||
|
||||
| Метрика | Результат | Бюджет открытой альфы |
|
||||
|---|---:|---:|
|
||||
| Performance | 100 | ≥ 85 |
|
||||
| FCP | 1,15 с | ≤ 2,0 с |
|
||||
| LCP | 1,66 с | ≤ 2,5 с |
|
||||
| CLS | 0,023 | ≤ 0,10 |
|
||||
| TBT | 9 мс | ≤ 200 мс |
|
||||
| Accessibility | 96 до правок контраста/name | 100 при повторной проверке |
|
||||
|
||||
Команда:
|
||||
|
||||
```bash
|
||||
npm --prefix apps/web run build
|
||||
HOST=127.0.0.1 PORT=4321 API_INTERNAL_URL=http://127.0.0.1:8000 npm --prefix apps/web run start
|
||||
npm --prefix apps/web run audit:lighthouse
|
||||
```
|
||||
|
||||
Lighthouse не измеряет полевой INP. После развёртывания следует собрать реальные Web Vitals без cookies и персональных идентификаторов, повторить mobile/desktop Lighthouse через публичный TLS и записать медиану минимум трёх запусков. Не менять изображения, кэш или SSR по одному нестабильному прогону.
|
||||
Reference in New Issue
Block a user