Отвечаем на ваши гипотетические вопросы с точки зрения физики

Отзывчивость сайта и обратная связь

Примерно два месяца назад мы ввели ряд улучшений, существенно повлиявших на скорость отображения сайта. Для быстрых соединений скорость открытия страниц улучшилась в два раза: с 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.

Наш код мы публикуем как общественное достояние, и (возможно, после небольшой адаптации) его можно переиспользовать в любом другом проекте. Мы не накладываем дополнительных условий, но если вам пригодятся эти наработки, то мы будем рады обратной ссылке и вашим отзывам.