Ещё и года не прошло с запуска предыдущей версии — Нео, — а мы уже готовим новую.
Что же изменилось?
Мы нарисовали новый дизайн. Более лёгкий и удобный. Более простой.
Но главные изменения находятся «под капотом». Если визуально всё вроде похоже на Нео — папки слева, письма справа, кнопки сверху, то внутри все изменилось полностью.
Скорости, ответили мы. Хотим, чтобы было быстро. Чтобы Почта мгновенно загружалась и реагировала на наши действия.
Что происходит при обычном использовании почты сейчас, в Нео?
Мы открываем почту и попадаем во «Входящие». Видим там новое письмо и открываем его. Читаем, возвращаемся обратно во «Входящие».
Для того, чтобы мы смогли прочитать одно письмо, браузеру пришлось загрузить три довольно объемных страницы. При этом первая отличается от второй всего одним блоком (текст письма вместо списка писем), а третья просто совпадает с первой. Чтобы сгенерировать html для этих страниц, нужно три раза запросить из базы почти одинаковые данные, сформировать из них xml и наложить xslt-преобразование.
Расточительно!
Мы решили, что можно сделать проще и быстрее. Теперь мы шлём в браузер не html, а непосредственно данные в формате xml — ровно те, что нужны для генерации страницы. Этот xml кэшируется в браузере и не перезапрашивается повторно. Сама страница со всеми необходимыми ресурсами (css, js, ...) грузится один раз в самом начале и больше не перегружается.
При перемещении по почтовому ящику мы лишь скрываем одни блоки и показываем на их месте другие.
По-прежнему html этих блоков генерируется с помощью xslt, но уже не на сервере, а прямо в браузере
(несмотря на то, что браузеры в первую очередь ассоциируются с такими технологиями, как html и css,
во всех современных версиях есть возможность работы и с xml/xpath/xslt).
Сами html-блоки также кэшируются, чтобы не тратить время на их перегенерацию и вставку на страницу (а это одна из наиболее затратных операций в большинстве браузеров).
Снижается нагрузка на сервера и базы:
- Браузер совершает меньше http-запросов, сами данные компактнее, быстрее грузятся и кэшируются в браузере;
- При переходах между папками и письмами браузер изменяет лишь необходимые блоки.
- В частности, возврат к посещенным ранее страницам мгновенен — нужно лишь спрятать одни блоки и показать другие.
Что ещё мы улучшили в новой версии Почты?
Мы сделали новую html-верстку в соответствии с концепцией абсолютно независимых блоков.
Кроме того, мы отказались от эмуляции «спецэффектов» (закругленные уголки, тени, полупрозрачность и т.д.) в старых браузерах. Например, в IE6 вы не увидите закругленных уголков, зато в современных браузерах мы используем их быструю встроенную реализацию.
Для уведомления пользователя о новых письмах мы используем технологию web sockets — это возможность получать в браузере сообщения от сервера сразу в момент прихода письма. Традиционно для этих целей используют периодический запрос к серверу, что не позволяет добиться мгновенной доставки новых писем.
Помимо того, что серверная технология xslt перекочевала в браузер, случилось и обратное. В наш серверный код из браузера пришел javascript. Он используется для формирования xml-данных. Дело в том, что к xml, использующемуся в браузере для наложения на него xslt, предъявляются особые требования — он должен быть компактным и удобным для xslt. И теперь мы можем без перекомпиляции и перезапуска серверного кода менять на лету xml так, как нам нужно.
Многое уже сделано, но ещё больше предстоит.
Функциональность браузеров за последние годы сильно увеличились. Наша задача — использовать все возможности современных технологий, чтобы сделать Яндекс.Почту ещё более быстрой и удобной.
Готовьтесь!