Новая страница выдачи от Яндекса
Главные отличия от привычной версии заключаются в дизайне и технологических решениях.
Михаил Трошев, руководитель группы разработки поисковых интерфейсов Яндекса, в блоге компании рассказал о методах и технологиях, которые применяются для разработки новой страницы результатов поиска.
Что касается разработки шаблонов:
«Сильно сократить время на разработку и тестирование первого прототипа помог наш механизм сборки проектов, основанный на методологии БЭМ (Блок-Элемент-Модификатор). Он позволяет подключать внешние библиотеки блоков, так что существенную часть интерфейса мы собрали из готовых блоков, которые уже есть на других сервисах Яндекса и лежат в разных внутренних git- и svn-репозиториях».
Про JavaScript:
«Под капотом у новой версии страницы результатов поиска JavaScript-шаблоны. Они работают быстрее, чем шаблонизатор для языка Perl TT2, который мы использовали раньше, и писать их удобнее и проще».
AJAX, History API:
«Новая версия страницы результатов поиска потребует повсеместного применения ajax и historiapi».
CSS:
«Почти все возможности CSS3 были задействованы для решения наших задач. Стрелочки меню на трансформах, тени у блоков, псевдоселекторыfirst-child/last-child вместо классов-модификаторов – все это есть в новом интерфейсе. При этом для старых браузеров предусмотрена деградация: вместо теней — простые однопиксельные контуры, вместо стрелочек в меню — обычные прямоугольники, svg-градиенты в IE9 и сплошная заливка фона для IE8 и старше».
Деплой:
«Почти все наши проекты хранят свои статические файлы на статическом кластере — yandex.st. Причин для использования статического кластера несколько:
- не нужно генерировать файлы перед отправкой — всё уже готово и лежит на диске;
- для передачи готовых файлов достаточно лёгкого веб-сервера;
- не требуется высокая производительность машин;
- статика кэшируется навсегда, а инвалидация осуществляется либо изменением версии пакета, либо изменением хэш-суммы;
- на домен yandex.st не отправляются куки сервиса, это уменьшает объём трафика;
- «сквозные» файлы (использующиеся на нескольких сервисах, например jquery.min.js или логотип Яндекса) не нужно загружать каждый раз при переходе с сервиса на сервис».
По словам Михаила Трошева, совершенствование интерфейса страницы выдачи продолжится.