2016-10-24 7 views
0

Может кто-нибудь объяснить, что автор означает ниже, заявив, что «родная потоковая XHR» более эффективна, чем «опрос XHR».Почему собственные события Server-Sent (SSE) более эффективны, чем альтернатива polyfill?

Мне очень интересно узнать, есть ли более эффективный способ передачи данных с сервера на клиент (с использованием XHR - это не вопрос о веб-сокетах). Из того, что я могу сказать, SSE в основном просто предоставляет API для выполнения «chunked» ответа сервера и добавляет некоторую функцию, например, возобновление подключения. Действительно ли было увеличение производительности в реализации SSE?

Хотя polyfill обеспечит последовательное API, следует помнить, что основной XHR транспорт не будет столь же эффективным:

XHR опрос будет нести задержки сообщений и высокий запрос накладных расходов. XHR длительный опрос минимизирует задержки, но имеет высокие накладные расходы. Поддержка потоковой передачи XHR ограничена и буферизирует все данные в памяти.

без встроенной поддержки для эффективного XHR потокового потока событий данных, библиотека polyfill может Откат к опросу, длительного опроса или XHR вытекание, каждый из которых имеет свои собственные издержки производительности.

High Performance Browser Сеть по Илья Григорик https://hpbn.co/server-sent-events-sse/#emulating-eventsource-with-custom-javascript

+0

Не так ли цитата объясняет, что неэффективно в опросе XHR? – Bergi

+0

Я понимаю, что опрос XHR неэффективен - я спрашиваю, почему SSE более эффективен. Вы можете утверждать, что ни эффективны, но это не мой вопрос. – Charlie

+1

Поскольку он использует только одно соединение/единственный запрос, имеет низкую задержку и не использует лишнюю буферизацию? – Bergi

ответ

0

XHR потокового и Госсанэпиднадзора очень похожи с точки зрения производительности, кроме того XHR потоковом не обычно считается «неподдерживаемый особенность в современных браузерах», потому что там нет способ очистки буфера, если вы не восстановите соединение. Этот ответ объясняет все это и предлагает очень громоздкое обходное решение: Memory efficient message chunk processing using a XMLHttpRequest.

Реализация SSE просто очищает буфер после получения каждого события: https://dxr.mozilla.org/mozilla-central/source/dom/base/EventSource.cpp.

 Смежные вопросы

  • Нет связанных вопросов^_^