Проблема Или Возможность
Сейчас страница /ask после монтирования грузит весь search-index.json в браузер, а он уже весит примерно 1 МБ и будет расти: components/search/AskStackMirea.tsx (line 22), scripts/build-search-index.mjs (line 313).
Для 71 документа это терпимо, но дальше начнет бить по TTFB, памяти и мобильным устройствам.
Предлагаемое Решение
Целевая архитектура в 2 этапа. Этап 1, без отказа от GitHub Pages: разбить индекс на search-index/meta.json и search-index/.json, подгружать чанки по теме или по первым токенам запроса. Этап 2, если проект готов к динамике: вынести поиск в /api/search, где хранится предсобранный инвертированный индекс, а клиент получает только топ-N результатов и summary.
Эффект: заметно лучше UX и понятная эволюционная дорожка от stateless поиска к настоящему backend search service.
Область Изменения
No response
Рассмотренные Альтернативы
No response
Критерии Готовности
No response
Проблема Или Возможность
Сейчас страница /ask после монтирования грузит весь search-index.json в браузер, а он уже весит примерно 1 МБ и будет расти: components/search/AskStackMirea.tsx (line 22), scripts/build-search-index.mjs (line 313).
Для 71 документа это терпимо, но дальше начнет бить по TTFB, памяти и мобильным устройствам.
Предлагаемое Решение
Целевая архитектура в 2 этапа. Этап 1, без отказа от GitHub Pages: разбить индекс на search-index/meta.json и search-index/.json, подгружать чанки по теме или по первым токенам запроса. Этап 2, если проект готов к динамике: вынести поиск в /api/search, где хранится предсобранный инвертированный индекс, а клиент получает только топ-N результатов и summary.
Эффект: заметно лучше UX и понятная эволюционная дорожка от stateless поиска к настоящему backend search service.
Область Изменения
No response
Рассмотренные Альтернативы
No response
Критерии Готовности
No response