Отзывчивость сайта и обратная связь
Примерно два месяца назад мы ввели ряд улучшений, существенно повлиявших на скорость отображения сайта. Для быстрых соединений скорость открытия страниц улучшилась в два раза: с 700 мс до 400 мс, а для очень медленных соединений — больше чем в три раза: с 35 секунд до 10. Чтобы получить эти результаты, мы улучшили процедуру сборки сайта, оптимизировали некоторые аспекты работы веб-сервера, добавили хак для ускорения загрузки графических элементов оформления. А еще устранили ряд проблем с версткой, и теперь страница не «прыгает» в процессе загрузки.
Для тех, кому интересны технические подробности:
- Мы перенесли значительную часть постпроцессинга HTML из клиентского JavaScriptʼа в плагины для Python-Markdown. Это, кстати, позволило загружать JavaScript асинхронно.
- Добавили inline CSS для предзагрузки графических элементов оформления.
- Уменьшили размер загружаемых картинок, создав для каждой палитру с помощью pngquant.
- Добавили минификацию HTML, CSS и JavaScript.
- Включили поддержку HTTP/2.
- Увеличили степень сжатия страниц с помощью gzip и добавили кэширование сжатых страниц.
Идеи не закончились, так что мы планируем и дальше улучшать отзывчивость сайта.
У нас появился новый (хорошо забытый старый :)) канал общения и обратной связи: теперь можно сообщить нам об ошибке на сайте не отвлекаясь от чтения. Для этого нужно выделить фрагмент текста, нажать Ctrl+Enter (или появившуюся кнопку, если читаете со смартфона) и отправить нам форму. В результате создается отчет об ошибке в нашем репозитории на GitHubʼе, где при наличии аккаунта можно подписаться на обновления статуса или оставить дополнительную информацию. Большое спасибо проекту Orphus за идею!
Из технических подробностей можно отметить следующие:
- Клиентская часть написана на чистом JavaScript.
- Поддерживаются все современные браузеры, включая мобильные; не поддерживаются — IE 8 и ниже[1].↲Во имя сохранения рассудка разработчика.
- Серверная часть написана на Flask, для деплоя используется Fabric3.
- Серверная часть отправляет запросы на GitHub через Integrations API.
Наш код мы публикуем как общественное достояние, и (возможно, после небольшой адаптации) его можно переиспользовать в любом другом проекте. Мы не накладываем дополнительных условий, но если вам пригодятся эти наработки, то мы будем рады обратной ссылке и вашим отзывам.