From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/api/beacon_api/index.html | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 files/ru/web/api/beacon_api/index.html (limited to 'files/ru/web/api/beacon_api/index.html') diff --git a/files/ru/web/api/beacon_api/index.html b/files/ru/web/api/beacon_api/index.html new file mode 100644 index 0000000000..984c00117d --- /dev/null +++ b/files/ru/web/api/beacon_api/index.html @@ -0,0 +1,51 @@ +--- +title: Beacon API +slug: Web/API/Beacon_API +tags: + - Beacon + - JSAPI Reference + - Производительность +translation_of: Web/API/Beacon_API +--- +
{{DefaultAPISidebar("Beacon")}}{{SeeCompatTable}}
+ +
+ +

Интерфейс Beacon используется для планирования асинхронного и неблокирующего запроса к веб-серверу. Beacon запросы используют метод HTTP POST, и обычно не требуют ответа. Запросы гарантированно будут  инициированы до того, как страница будет выгружена, и они выполняются до конца, не требуя блокирующего запроса (например {{domxref("XMLHttpRequest")}}).

+ +

Например, вариантом использования Beacon API может быть логирование активности или отправка аналитики на сервер.

+ +

Пример кода интерфейсов, описанных в этом документе, включен в раздел Использование Beacon API.

+ + + +

Зачем использовать Beacon?

+ +

Интерфейс Beacon отвечает потребностям аналитического и диагностического кода, который обычно пытается отправить данные на веб-сервер перед выгрузкой документа. Отправка данных хоть на секунду раньше может привести к упущенной возможности сбора данных. В любом случае, обеспечение того, чтобы данные отправлялись во время выгрузки документа, является чем-то, что традиционно было трудным для разработчиков.

+ +

Пользовательские браузеры обычно игнорируют асинхронные  {{domxref("XMLHttpRequest","XMLHttpRequests")}} сделанные в обработчике выгрузки. Для решения этой проблемы, аналитический и диагностический код обычно создает синхронный {{domxref("XMLHttpRequest")}} в обработчике {{event("unload")}} или {{event("beforeunload")}} для отправки данных. Синхронный {{domxref("XMLHttpRequest")}} заставляет браузер отложить выгрузку документа и делает следующую навигацию более медленной. Следующая страница ничего не может сделать, чтобы избежать этого ощущения низкой производительности при загрузке страницы. 

+ +

Есть и другие методы, используемые для проверки предоставления данных. Одним из таких методов является задержка отправки данных путем создания элемента Image и установки его атрибута src в обработчике выгрузки. Поскольку большинство браузеров откладывают выгрузку для завершения ожидающей загрузки изображения, данные могут быть отправлены во время выгрузки. Другой метод заключается в создании неработающего цикла, который  в течение нескольких секунд будет висеть в обработчике выгрузки, чтобы задержать выгрузку и отправить данные на сервер.

+ +

Эти методы представляют плохие шаблоны программирования, некоторые из них ненадежны и приводят к восприятию плохой производительности при загрузке страницы для следующей навигации. API-интерфейс Beacon предоставляет стандартный способ решения этих проблем.

+ +

Глобальный контекст

+ +

Интерфейс Beacon API's предоставляет метод {{domxref("Navigator.sendBeacon()")}}, который используется для отправки beacon данных  на сервер в глобальный браузерный контекст. Метод принимает два аргумента: URL и данные для отправки в запросе. Аргумент data является необязательным, и его тип может быть {{domxref ("ArrayBufferView")}}, {{domxref ("Blob")}}, {{domxref ("DOMString")}} или {{domxref (" FormData ")}}. Если браузер успешно поставил в очередь запрос на доставку, то метод возвращает true либо возвращает false в противном случае.

+ +

Рабочий контекст

+ +

Интерфейс Beacon API's предоставляет метод {{domxref("Navigator.sendBeacon()")}}, который используется для отправки beacon данных на сервер из {{domxref("WorkerGlobalScope","worker global scope")}}. Метод принимает два аргумента: URL-адрес и данные для отправки в запросе. Аргумент data является необязательным, и его тип может быть {{domxref("ArrayBufferView")}}, {{domxref("Blob")}}, {{domxref("DOMString")}}, или {{domxref("FormData")}}. Если браузер успешно поставил в очередь запрос на доставку, то метод возвращает true либо возвращает false в противном случае.

+ +

Совместимость с браузерами

+ +

The {{domxref("Navigator.sendBeacon","Navigator.sendBeacon()","Browser_compatibility")}} table indicates that method has relatively broad implementation.

+ +

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf