GitHub переработал архитектуру навигации: мгновенный переход вырос с 4% до 22%

GitHub объявил о значительном повышении скорости навигации в разделе Issues. Благодаря переосмыслению клиентской архитектуры доля мгновенных переходов между страницами выросла с 4% до 22%. Это стало возможным благодаря комбинации кэширования в IndexedDB, предварительной выборки данных (prefetching)

GitHub переработал архитектуру навигации: мгновенный переход вырос с 4% до 22%

GitHub объявил о значительном повышении скорости навигации в разделе Issues. Благодаря переосмыслению клиентской архитектуры доля мгновенных переходов между страницами выросла с 4% до 22%. Это стало возможным благодаря комбинации кэширования в IndexedDB, предварительной выборки данных (prefetching) и использования service workers для фоновой синхронизации. Теперь разработчики могут быстрее перемещаться между списками задач, фильтрами и детальными карточками, что особенно важно для крупных проектов с тысячами issues.

Как GitHub ускорил навигацию в Issues

Проблема навигации в GitHub Issues была известна давно: при переходе между списком задач, детальной страницей issue и фильтрами пользователи сталкивались с задержками, которые ухудшали восприятие скорости работы. Команда GitHub решила не просто оптимизировать серверную часть, а полностью переработать поведение клиента. В основе нового подхода лежит клиентская архитектура, которая минимизирует ожидание данных с сервера.

Ключевые элементы: IndexedDB для долговременного хранения кэша, in-memory кэш для быстрого доступа к часто используемым данным, предварительная загрузка страниц, которые пользователь, вероятно, откроет следующей, и service workers, которые позволяют обрабатывать запросы даже при отсутствии сети. В результате время ответа для типичных навигационных действий сократилось в несколько раз.

Предыстория и контекст

GitHub Issues — один из самых нагруженных разделов платформы, используемый миллионами разработчиков для отслеживания задач. С ростом количества репозиториев и увеличением объёмов данных (комментарии, метки, ассайны) производительность навигации стала узким местом. Ранее GitHub уже внедрял server-side рендеринг и CDN, но это не решало проблему полностью: каждый переход требовал нового запроса к API, что создавало задержки.

В более широком контексте это часть тренда на перенос логики на клиентскую сторону с использованием современных веб-технологий, таких как Service Workers и IndexedDB. Подобные подходы применяют и другие крупные платформы (например, Twitter и YouTube), но GitHub адаптировал их для специфики работы с большими древовидными структурами данных.

Как работает новая архитектура?

Когда пользователь открывает страницу Issues, система сразу загружает не только текущие данные, но и начинает prefetching наиболее вероятных следующих страниц — например, следующей страницы пагинации или популярного issue. Service Worker перехватывает все последующие запросы и сначала проверяет кэш в IndexedDB. Если данные есть, они отображаются мгновенно, а в фоне происходит проверка актуальности. Если данных нет — запрос уходит на сервер, но пользователь видит индикатор загрузки.

In-memory кэш ускоряет повторные посещения одних и тех же страниц в рамках сессии. Фоновая синхронизация обновляет кэш, когда пользователь бездействует или переключает вкладки. Это позволяет поддерживать данные актуальными без потери скорости.

Технические детали и результаты

GitHub сообщил, что доля мгновенных навигаций (когда страница отображается без видимой задержки) выросла с 4% до 22%. При этом медианное время загрузки страницы снизилось на 30-50% в зависимости от типа перехода. Например, переход со списка на детальную страницу issue стал занимать менее 200 мс против 600-800 мс ранее.

Архитектура использует: - IndexedDB для хранения кэша объёмом до 50 МБ на пользователя; - Service Workers для перехвата запросов и фоновой синхронизации; - Предиктивный prefetching на основе истории навигации пользователя; - In-memory LRU-кэш для быстрого доступа.

Интересно, что GitHub не стал внедрять полноценный PWA (Progressive Web App), а сосредоточился именно на навигации внутри Issues, оставив другие разделы без изменений. Это прагматичный подход: максимальный эффект при минимальных затратах.

Кого затронет и как

Новая архитектура в первую очередь полезна разработчикам, которые активно используют GitHub Issues для управления проектами. Особенно это заметно в крупных open-source репозиториях с тысячами задач, где навигация раньше была медленной. Пользователи увидят, что переключение между фильтрами, страницами и детальными карточками стало практически мгновенным.

Для бизнеса и команд, использующих GitHub Enterprise, улучшение производительности может повысить продуктивность, сократив время ожидания. Конкуренты GitHub, такие как GitLab и Bitbucket, также работают над производительностью, но пока не анонсировали аналогичных изменений.

Российские и СНГ-разработчики, работающие с GitHub, также выиграют от оптимизации, особенно при использовании GitHub через VPN или с нестабильным соединением — service workers позволяют частично работать офлайн.

Какие ещё улучшения производительности планирует GitHub?

GitHub планирует расширить новую архитектуру на другие разделы платформы, такие как Pull Requests и Actions. В ближайших релизах ожидается улучшение prefetching-алгоритмов и увеличение объёма кэша. Также возможно внедрение адаптивного кэширования, которое будет учитывать частоту использования конкретных данных.

В долгосрочной перспективе GitHub может перейти к полному client-side рендерингу для всех страниц, что сделает платформу похожей на современные веб-приложения. Однако пока компания сохраняет серверный рендеринг для SEO и первой загрузки.

Итог

Улучшение навигации в GitHub Issues — пример того, как грамотное применение клиентских технологий может кардинально повысить воспринимаемую скорость работы. Переход от 4% к 22% мгновенных навигаций — значимый результат, который делает работу с Issues более комфортной. Следите за обновлениями: в ближайшее время GitHub может внедрить аналогичные оптимизации и в других частях платформы.