SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
HTML5 в Я.Почте
Алексей Андросов
Старший разработчик интерфейсов



Я.Субботник, Киев, 28 мая 2011 года
Будущее? Реальность!
2
WebSocket
— Забудьте про polling, long-polling и
  comet!
— Честный двухсторонний обмен данными
  без лишних телодвижений
— Идеально для любых push-уведомлений
  (например, чат)
— Chrome 4+, Safari 5+, Firefox 4+,
  Opera 11+.
— 50% пользователей Я.Почты
    FAIL! 14% пользователей
3
localStorage
— Локальное постоянное хранилище
  текстовых данных в браузере
— Chrome 4+, Firefox 3.5+, IE8+, Opera
  10.5+, Safari 4+.
— 88% пользователей Я.Почты




4
Cross-site XHR with CORS
— Забудьте про проблемы междоменного
  общения!
— Разносим службы по разным доменам —
  эффективная балансировка нагрузки
— Обычный XMLHttpRequest, но с
  возможностью делать запросы в другой
  домен
— Chrome 3+, Firefox 3.5+, IE8+, Safari 4+
— 70% пользователей Я.Почты


5
WebSocket
или как работает
автообновление в
Я.Почте



6
Автообновление почты
Сервер: Xiva (HTTP Extended Event
Automata)
Лицензия GPL, github.com/highpower/xiva
— Специально написан, чтобы держать
  много подключений
— Занимается только доставкой push-
  уведомлений
— Каждый сервис может послать туда
  сообщение, не задумываясь о его
  доставке

7
Автообновление почты
Три варианта работы в браузере:
— WebSocket (Chrome 4+, Safari 5+)
— Flash WebSocket (на основе web-socket-
  js)
— Iframe + long-polling + postMessage




8
Автообновление почты
Недостатки Flash
— Плохая реализация для не-Windows ОС
— После реализации WSS размер
  возрастает до 200кб
— Если что-то пошло не так, то flash сразу
  падает


— Отказываемся в пользу XDR + long-
  polling или comet

9
Автообновление почты
Преимущества WebSocket
— Не учитывается в ограничениях на
  количество одновременных
  подключений, т.к. другой протокол
— Возможность кроссдоменных запросов




10
Автообновление почты
Недостатки WebSocket
— Протокол и API до сих пор не
  утверждены как стандарт
— В JS API нельзя получить заголовки
  ответа. Например, вместо 403 надо
  отвечать специальным сообщением
— При потере интернета не всегда
  закрывает соединение. Нужны ping-
  pong события для проверки соединения



11
Автообновление почты
FAIL WebSocket
— В ноябре 2010 года были опубликованы
  исследования протокола. Из-за багов в
  реализации прозрачных прокси-
  серверов с помощью протокола можно
  подменять кэш сервера
— Как и когда это будет исправлено —
  непонятно
— WebSocket по-умолчанию отключен в
  Firefox и Opera


12
XDR + localStorage
или как грузится
Я.Почта



13
localStorage + Cross-site XHR
С помощью кроссдоменных запросов
забираем CSS, JS, XSL (~1Мб) со
статического кластера и записываем ее в
localStorage.
В ключи к данным добавляется текущая
версия, чтобы точно понять, когда нам
надо обновить статику.


Итог: ускорение загрузки Я.Почты на 1,5-3
секунды.

14
localStorage
 <!–- Определение поддержки localStorage © Modernizr -->
  try {
      return !!localStorage.getItem;
  } catch(e) {
      return false;
  }


Методы: getItem, setItem, key, clear
Свойства: length, remainingSpace (IE)
Все методы надо оборачивать
         в try-catch!

15
localStorage
Ограничения на домен
 A mostly arbitrary limit of five megabytes
per origin is recommended.
     dev.w3.org/html5/webstorage/#disk-space


     Все браузеры следуют этой
         рекомендации, но…



16
localStorage
Ограничения на домен
— Chrome, Safari используют SQLite и UTF-
  16, поэтому записать можно ~2,5 млн.
  символов
— Fx, — SQLite + UTF-8, ~5 млн. символов
— IE — xml, ~5 млн. символов
— Opera — xml + base64, ~2 млн.
  символов. Появляется сообщение с
  просьбой увеличить размер


17
localStorage
Глобальные ограничения
 User agents should guard against sites
storing data under the origins other affiliated
sites, e.g. storing up to the limit in
a1.example.com, a2.example.com, etc,
circumventing the main example.com storage
limit.
     dev.w3.org/html5/webstorage/#disk-space
— Chrome, Safari — нет
— Fx, IE ~5 млн. символов на домен 2-го
  уровня
— Opera — ~35 млн. символов на всё
18
Cross-site XHR with CORS
 <!–- Определение поддержки -->
  !!(window['XDomainRequest'] ||
  (window['XMLHttpRequest'] && 'withCredentials' in new
 XMLHttpRequest()));

CORS — Cross-Origin Resource Sharing
(http://www.w3.org/TR/access-control/)


Браузер отправляет дополнительный
заголовок «Origin: http://mail.yandex.ru»
Сервер отвечает «Access-Control-Allow-Origin: *»

19
Cross-site XHR with CORS
Проблемы
— Не все прокси-сервера пропускают
  заголовки Access-Control-Allow-Origin
 xdr['onerror'] = function(){
    // fallback до обычный системы загрузки
 }


— XDomainRequest не является заменой
  XHR, имеет ограниченный функционал
— В IE9 в режиме IE9 виснут запросы
 xdr['onprogress'] = function() {};


20
Вопросы?




21
Алексей Андросов
Старший разработчик
интерфейсов

aandrosov@yandex-team.ru

Weitere ähnliche Inhalte

Was ist angesagt?

Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....KazHackStan
 
Perl resources
Perl resourcesPerl resources
Perl resourcesmegakott
 
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...KazHackStan
 
Михаил Давыдов: Транспорт, ajax
Михаил Давыдов: Транспорт, ajaxМихаил Давыдов: Транспорт, ajax
Михаил Давыдов: Транспорт, ajaxYandex
 
Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxYandex
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...KazHackStan
 
Проект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализацииПроект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализацииbntulibrary
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.Alexander Frolov
 
WebSockets
WebSocketsWebSockets
WebSocketsplusnin
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколыRoman Brovko
 
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...KazHackStan
 
Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Socketsrit2010
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноVladislav Bezverhiy
 

Was ist angesagt? (20)

Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
 
Perl resources
Perl resourcesPerl resources
Perl resources
 
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
 
Михаил Давыдов: Транспорт, ajax
Михаил Давыдов: Транспорт, ajaxМихаил Давыдов: Транспорт, ajax
Михаил Давыдов: Транспорт, ajax
 
HTTP протокол
HTTP протоколHTTP протокол
HTTP протокол
 
Сокеты
СокетыСокеты
Сокеты
 
Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, Ajax
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
 
Проект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализацииПроект OAI-Беларусь. Технические аспекты реализации
Проект OAI-Беларусь. Технические аспекты реализации
 
WWW
WWWWWW
WWW
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
 
WebSockets
WebSocketsWebSockets
WebSockets
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
Анализ трафика
Анализ трафикаАнализ трафика
Анализ трафика
 
Speed
SpeedSpeed
Speed
 
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...
 
Web sockets
Web socketsWeb sockets
Web sockets
 
Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Sockets
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. Молодёжно
 

Andere mochten auch

Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Yandex
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Yandex
 
Real-Time Web: Consumers and Brands
Real-Time Web: Consumers and BrandsReal-Time Web: Consumers and Brands
Real-Time Web: Consumers and BrandsSasha Kovaliov
 
Do the Software Architects get the Needed Support for the job They Perform?
Do the Software Architects get the Needed Support for the job They Perform?Do the Software Architects get the Needed Support for the job They Perform?
Do the Software Architects get the Needed Support for the job They Perform?Kresimir Popovic
 

Andere mochten auch (6)

Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
 
HTML5 WebSockets and WebWorkers
HTML5 WebSockets and WebWorkersHTML5 WebSockets and WebWorkers
HTML5 WebSockets and WebWorkers
 
Real-Time Web: Consumers and Brands
Real-Time Web: Consumers and BrandsReal-Time Web: Consumers and Brands
Real-Time Web: Consumers and Brands
 
Do the Software Architects get the Needed Support for the job They Perform?
Do the Software Architects get the Needed Support for the job They Perform?Do the Software Architects get the Needed Support for the job They Perform?
Do the Software Architects get the Needed Support for the job They Perform?
 
Joel Roberts
Joel RobertsJoel Roberts
Joel Roberts
 

Ähnlich wie Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"

Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеAlexey Androsov
 
Ajax and Transports (in russian)
Ajax and Transports (in russian)Ajax and Transports (in russian)
Ajax and Transports (in russian)Mikhail Davydov
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Ontico
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3Technopark
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3Technopark
 
Web весна 2013 лекция 2
Web весна 2013 лекция 2Web весна 2013 лекция 2
Web весна 2013 лекция 2Technopark
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2Dima Dzuba
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhonePavel Bashmakov
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networkingguest57eb8a
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2Technopark
 
архитектура новой почты рамблера
архитектура новой почты рамблераархитектура новой почты рамблера
архитектура новой почты рамблераHighLoad2009
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует GoArtem Kovardin
 
67
6767
67JIuc
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianMikhail Davydov
 
Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...
Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...
Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...Ontico
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутриHappyDev-lite
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 

Ähnlich wie Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)" (20)

Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
 
Ajax and Transports (in russian)
Ajax and Transports (in russian)Ajax and Transports (in russian)
Ajax and Transports (in russian)
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
 
Web весна 2013 лекция 2
Web весна 2013 лекция 2Web весна 2013 лекция 2
Web весна 2013 лекция 2
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2
 
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
 
Cocoa Networking
Cocoa NetworkingCocoa Networking
Cocoa Networking
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2
 
Ramail Arch
Ramail ArchRamail Arch
Ramail Arch
 
архитектура новой почты рамблера
архитектура новой почты рамблераархитектура новой почты рамблера
архитектура новой почты рамблера
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 
67
6767
67
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
 
Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...
Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...
Frontik - Cервер-агрегатор на Python (Андрей Сумин, Михаил Сабуренков, Павел ...
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 

Mehr von Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Mehr von Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"

  • 1. HTML5 в Я.Почте Алексей Андросов Старший разработчик интерфейсов Я.Субботник, Киев, 28 мая 2011 года
  • 3. WebSocket — Забудьте про polling, long-polling и comet! — Честный двухсторонний обмен данными без лишних телодвижений — Идеально для любых push-уведомлений (например, чат) — Chrome 4+, Safari 5+, Firefox 4+, Opera 11+. — 50% пользователей Я.Почты FAIL! 14% пользователей 3
  • 4. localStorage — Локальное постоянное хранилище текстовых данных в браузере — Chrome 4+, Firefox 3.5+, IE8+, Opera 10.5+, Safari 4+. — 88% пользователей Я.Почты 4
  • 5. Cross-site XHR with CORS — Забудьте про проблемы междоменного общения! — Разносим службы по разным доменам — эффективная балансировка нагрузки — Обычный XMLHttpRequest, но с возможностью делать запросы в другой домен — Chrome 3+, Firefox 3.5+, IE8+, Safari 4+ — 70% пользователей Я.Почты 5
  • 7. Автообновление почты Сервер: Xiva (HTTP Extended Event Automata) Лицензия GPL, github.com/highpower/xiva — Специально написан, чтобы держать много подключений — Занимается только доставкой push- уведомлений — Каждый сервис может послать туда сообщение, не задумываясь о его доставке 7
  • 8. Автообновление почты Три варианта работы в браузере: — WebSocket (Chrome 4+, Safari 5+) — Flash WebSocket (на основе web-socket- js) — Iframe + long-polling + postMessage 8
  • 9. Автообновление почты Недостатки Flash — Плохая реализация для не-Windows ОС — После реализации WSS размер возрастает до 200кб — Если что-то пошло не так, то flash сразу падает — Отказываемся в пользу XDR + long- polling или comet 9
  • 10. Автообновление почты Преимущества WebSocket — Не учитывается в ограничениях на количество одновременных подключений, т.к. другой протокол — Возможность кроссдоменных запросов 10
  • 11. Автообновление почты Недостатки WebSocket — Протокол и API до сих пор не утверждены как стандарт — В JS API нельзя получить заголовки ответа. Например, вместо 403 надо отвечать специальным сообщением — При потере интернета не всегда закрывает соединение. Нужны ping- pong события для проверки соединения 11
  • 12. Автообновление почты FAIL WebSocket — В ноябре 2010 года были опубликованы исследования протокола. Из-за багов в реализации прозрачных прокси- серверов с помощью протокола можно подменять кэш сервера — Как и когда это будет исправлено — непонятно — WebSocket по-умолчанию отключен в Firefox и Opera 12
  • 13. XDR + localStorage или как грузится Я.Почта 13
  • 14. localStorage + Cross-site XHR С помощью кроссдоменных запросов забираем CSS, JS, XSL (~1Мб) со статического кластера и записываем ее в localStorage. В ключи к данным добавляется текущая версия, чтобы точно понять, когда нам надо обновить статику. Итог: ускорение загрузки Я.Почты на 1,5-3 секунды. 14
  • 15. localStorage <!–- Определение поддержки localStorage © Modernizr --> try { return !!localStorage.getItem; } catch(e) { return false; } Методы: getItem, setItem, key, clear Свойства: length, remainingSpace (IE) Все методы надо оборачивать в try-catch! 15
  • 16. localStorage Ограничения на домен A mostly arbitrary limit of five megabytes per origin is recommended. dev.w3.org/html5/webstorage/#disk-space Все браузеры следуют этой рекомендации, но… 16
  • 17. localStorage Ограничения на домен — Chrome, Safari используют SQLite и UTF- 16, поэтому записать можно ~2,5 млн. символов — Fx, — SQLite + UTF-8, ~5 млн. символов — IE — xml, ~5 млн. символов — Opera — xml + base64, ~2 млн. символов. Появляется сообщение с просьбой увеличить размер 17
  • 18. localStorage Глобальные ограничения User agents should guard against sites storing data under the origins other affiliated sites, e.g. storing up to the limit in a1.example.com, a2.example.com, etc, circumventing the main example.com storage limit. dev.w3.org/html5/webstorage/#disk-space — Chrome, Safari — нет — Fx, IE ~5 млн. символов на домен 2-го уровня — Opera — ~35 млн. символов на всё 18
  • 19. Cross-site XHR with CORS <!–- Определение поддержки --> !!(window['XDomainRequest'] || (window['XMLHttpRequest'] && 'withCredentials' in new XMLHttpRequest())); CORS — Cross-Origin Resource Sharing (http://www.w3.org/TR/access-control/) Браузер отправляет дополнительный заголовок «Origin: http://mail.yandex.ru» Сервер отвечает «Access-Control-Allow-Origin: *» 19
  • 20. Cross-site XHR with CORS Проблемы — Не все прокси-сервера пропускают заголовки Access-Control-Allow-Origin xdr['onerror'] = function(){ // fallback до обычный системы загрузки } — XDomainRequest не является заменой XHR, имеет ограниченный функционал — В IE9 в режиме IE9 виснут запросы xdr['onprogress'] = function() {}; 20