Блог Windows Live
20 июня мы анонсировали новую версию сервиса SkyDrive, интерфейс которого был полностью перестроен для достижения высокой производительности в современных браузерах. Подобные изменения коснулись и Hotmail.
Мы измерили скорость загрузки страниц Hotmail во всем мире и сравнили со скоростью других сервисов электронной почты в сходных условиях. Какие-то функции работали достаточно быстро, но для целого ряда стандартных действий Hotmail оказался слишком медленным.
Мы сократили количество данных на страницах для увеличения скорости загрузки и сократили количество обращений к сервису во время авторизации. Однако основной целью было придать интерфейсу Hotmail ощущение мгновенности, и мы осознавали, что увеличение скорости загрузки интерфейса и контента не сильно приблизит нас к цели. Даже несмотря на скорости современного Интернета, канал по-прежнему является узким местом, замедляющим работу наших пользователей с почтой.
Проанализировав ситуацию, мы приняли решение перенести часть пользовательских данных в браузер пользователя, и когда необходимые данные еще не загружены, осуществлять передачу более эффективно и незаметно для пользователя. Мы также решили воспользоваться возможностями современных браузеров, таких как Internet Explorer 9, чтобы Hotmail по ощущениям был больше похож на приложение, а не веб-сайт, за счет выполнения большего количества задач в браузере и меньшего – на сервере.
Мы выделили три методики: кэширование, предварительная загрузка и асинхронные операции.
Старая версия Hotmail запрашивала данные с сервера каждый раз, когда это требовалось. Например, когда вы входили в почтовый ящик, Hotmail обращался к серверу для получения списка писем. Когда вы открывали, а затем закрывали сообщение, необходимо было подождать повторной загрузки списка сообщений. Точно так же, когда вы повторно открывали сообщение, вам приходилось ждать его повторной загрузки.
Новый Hotmail больше похож на приложение, поскольку теперь мы кэшируем информацию после ее первой загрузки. Список сообщений сохраняется объектной модели документа (DOM, Document Object Model), поэтому когда требуется отобразить список писем, его не нужно загружать. Мы также сохраняем уже однажды открытое письмо, поэтому если вы захотите открыть его снова, – это произойдет практически мгновенно.
При кэшировании данных необходимо знать, когда требуется их обновить. В новом Hotmail наш сервер определяет, когда данные вашей учетной записи изменяются (например, приходит новое сообщение), и отправляет уведомление браузеру. Браузер подгружает только обновленные данные и ваш почтовый ящик всегда находится в актуальном состоянии, при этом нет передачи лишнего трафика и нет необходимости обновлять весь интерфейс.
И, наконец, когда вы закрываете браузер или выходите из учетной записи Hotmail, кэш очищается и данные не сохраняются, чтобы обеспечить вашу конфиденциальность.
Анализ модели использования Hotmail показал, что когда пользователи входят в электронную почту, то первым делом они просматривают темы новых писем, чтобы выбрать сообщение для прочтения. В новом Hotmail мы пользуемся этим временем для загрузки и кэширования нескольких первых сообщений, чтобы подготовить их к открытию. Поэтому в тот момент, когда вы открываете письмо, оно уже загружено и вам не нужно ждать.
Наши исследования также показали, что когда пользователи открывают сообщение, они затем чаще всего читают следующее. Поэтому теперь, когда вы читаете сообщение, мы автоматически загружаем и кэшируем следующее сообщение в списке.
В настоящий момент эта функция включена по умолчанию не у всех пользователей, поэтому если вы не ощущаете ускорения и хотите воспользоваться предварительной загрузкой, то вы можете включить ее на странице Параметров.
В дополнение к предварительной загрузке сообщений мы также выполняем предварительную загрузку кода и других данных. Например, мы знаем, что большинство сеансов работы с Hotmail включают в себя отправку писем. Поэтому пока вы читаете и удаляете письма, мы загружаем и кэшируем код JavaScript, HTML и адресную книгу, которые необходимы вам для создания нового сообщения. Когда вы нажимаете “Создать” или “Ответить”, мы подключаем кэшированные код и данные и вы мгновенно видите форму создания нового письма.
Еще одной интересной задачей, которую нам пришлось решать, было определение способа загрузки данных без перегрузки интернет-канала и снижения производительности браузера. В случае неэффективной реализации приложение может казаться “зависшим”. Мы разделили и выстроили порядок загрузок для того, чтобы браузер лучше реагировал на действия пользователя, а наиболее важные задачи решались быстрее. Мы продолжим работу в этом направлении для достижения еще лучших результатов в будущем.
С учетом огромного количества пользователей Hotmail (более 360 миллионов уникальных пользователей в месяц) важной задачей было предотвратить перегрузку наших серверов и оптимизировать затраты на поддержание сервиса. Мы проделали большую работу по оптимизации пропускной способности системы хранения Hotmail, но об этом более подробно будет рассказано в будущем.
Старый Hotmail ожидал ответа сервера перед загрузкой пользовательского интерфейса. Например, когда вы удаляли сообщение, Hotmail обращался к серверу с запросом на удаление, и потом ожидал ответа, прежде чем начать обновление списка. Это делало Hotmail медленным, поскольку вам приходилось ждать окончания операции перед продолжением работы.
Новый Hotmail больше не ждет ответа от сервера перед обновлением интерфейса. Как только вы удаляете сообщение, Hotmail обновляет список и вы можете продолжить работу. При этом задача удаления в фоновом режиме добавляется в очередь и отправляется на сервер для удаления письма. Сообщение удаляется незаметно для вас и больше не нужно ждать завершения этой операции.
Благодаря такому подходу Hotmail стал менее зависимым от загрузки сервера и существенно повысил производительность для пользователей, которые пользуются медленным подключением к Интернету.
Наконец, мы воспользовались грандиозными улучшениями, сделанными командой Internet Explorer 9, сделав Hotmail еще быстрее в IE (например, благодаря стандартному режиму IE9).
Мы финализировали эти изменения всего несколько недель назад и совсем недавно закончили развертывание сервиса для всех пользователей (за исключением функции предварительной загрузки, которая, как уже упоминалось выше, пока не включена по умолчанию в некоторых странах). Итак, чего мы добились? Данные говорят сами за себя:
Декабрь 2010
Июнь 2011
Открытие сообщения
Удаление сообщения
Создание нового сообщения
Данные представляют 75-й процентиль измерений из сотен запусков автоматизированных тестов в рабочей эксплуатации. Интернет-канал: 300kb down/75 kb up/150ms latency, браузер - IE9. Разумеется, ваш результат может отличаться, но вы обязательно заметите общую тенденцию к существенному ускорению работы нового Hotmail.
Чтобы лучше почувствовать разницу в скорости, посмотрите видео:
Но это еще не все. Мы считаем, что производительность – это важная характеристика сервиса, и мы продолжим оптимизировать Hotmail, чтобы сделать его максимально быстрым. Мы будем изучать новые способы повышения скорости загрузки и эффективности выполнения стандартных действий.
Получайте удовольствие от нововведений и следите за нашими новостями!
Dick Craddock Group Program Manager, Hotmail
Оригинал: http://windowsteamblog.com/windows_live/b/windowslive/archive/2011/06/30/instant-email-how-we-made-hotmail-10x-faster.aspx .