Будьте в курсе последних событий, подпишитесь на обновления сайта

Сравнение транспортов и их возможностей

Сравнение транспортов и их возможностей

Здравствуйте!  В этой последней  статье, посвященной технологии AJAX я хотел бы сравнить так называемые транспорты это то посредством чего общаются клиент и сервер. И также привести краткий отчет о возможностях каждого транспорта. Итак давайте начинать.

сравнение транспортов ajax

Способы опроса сервера

Выделяют такие способы опроса сервера:

  1. Частые опросы – к серверу отправляется запрос за данными каждые 2 секунды например.  И сервер тут же отвечает на него,  при этом он возвращает данные, если таковые имеются.  Ну а если данных нет, то  запрос был в холостую.Способ довольно  прост в реализации, но он порождает очень много не нужных  запросов.
  2. Длинные опросы – к серверу отправляется запрос за данными. Сервер не ответит на него, пока у него не появится  данные. Когда данные поступили – ответ с ними отправится в браузер, и тот тут же сделает новый запрос.Способ хорош, пока сообщений  у вас не слишком много. В идеальном случае соединение почти всё время будет  висеть открытым и лишь иногда сервер отвечает на него, доставляя данные в клиент, то бишь в браузер.Также в принципе  удобен в реализации, но даёт  слишком большое количество висящих соединений на сервере. И далеко не все сервера хорошо поддерживают это. Например, веб-сервер Apache будет есть очень много памяти.
  3. Потоковое соединение –  данные идут потоком от сервера к  клиенту.

Таблица транспортов

Основные характеристики всех транспортов, представлены в таблице.

Все они были рассмотрены в предыдущих уроках.

XMLHttpRequest IFRAME SCRIPT EventSource WebSocket
Кросс-доменность да, кроме IE9 да да да да
Методы Любые GET / POST GET GET Свой протокол
COMET Длинные опросы Непрерывное соединение Длинные опросы Непрерывное соединение Непрерывное соединение в обе стороны
Поддержка Все браузеры, ограничения в IE9 Все браузеры Все браузеры Кроме IE IE 10, FF11, Chrome 16, Safari 6, Opera 12.5
Читайте также  Основы объекта XMLHttpRequest

Пояснения:

XMLHttpRequest

  • В IE8-9 поддерживаются кросс-доменные GET/POST запросы с ограничениями через XDomainRequest.
  • Можно говорить об ограниченной поддержке непрерывного соединения через onprogress, но это событие вызывается не чаще чем в 50ms и не гарантирует получение полного пакета данных. Например, сервер может записать слово  «Привет!», а событие вызовется один раз, когда браузер получил «При». Поэтому наладить обмен пакетами сообщений с его помощью затруднительно.
  • Многие возможности современного стандарта включены в IE лишь с версии 10.

IFRAME

  • Во всех современных браузерах и IE8 кросс-доменность обеспечивает  метод postMessage. В более старых браузерах возможны решения через window.name и хэш.

WebSocket

  • Имеется в виду поддержка окончательной редакции протокола RFC 6455. Более старые браузеры могут поддерживать черновики протокола. IE9- не поддерживает WebSocket.

Существует также нестандартный транспорт, не рассмотренный здесь:

  • XMLHttpRequest с флагом multipart, только для браузера Firefox.При указании свойства xhr.multipart = true и специального multipart-формата ответа сервера, Firefox инициирует onload при получении очередной части ответа. Ответ может состоять из любого количества частей, досылаемых по требованию сервера. Мы не рассматривали его, так как Firefox поддерживает другие, более кросс-браузерные и стандартные транспорты.

В современных браузерах поддерживается новый метод fetch,  как замена XMLHttpRequest.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться

Об авторе

admin administrator

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: