aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/api/beacon_api/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/ru/web/api/beacon_api/index.html')
-rw-r--r--files/ru/web/api/beacon_api/index.html51
1 files changed, 51 insertions, 0 deletions
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
+---
+<div>{{DefaultAPISidebar("Beacon")}}{{SeeCompatTable}}</div>
+
+<div></div>
+
+<p>Интерфейс <strong><code>Beacon</code></strong> используется для планирования асинхронного и неблокирующего запроса к веб-серверу. <strong><code>Beacon</code></strong> запросы используют метод HTTP POST, и обычно не требуют ответа. Запросы гарантированно будут  инициированы до того, как страница будет выгружена, и они выполняются до конца, не требуя блокирующего запроса (например {{domxref("XMLHttpRequest")}}).</p>
+
+<p>Например, вариантом использования Beacon API может быть логирование активности или отправка аналитики на сервер.</p>
+
+<p>Пример кода интерфейсов, описанных в этом документе, включен в раздел <em><a href="/Web/API/Beacon_API/Using_the_Beacon_API">Использование Beacon API</a></em>.</p>
+
+
+
+<h2 id="Зачем_использовать_Beacon">Зачем использовать Beacon?</h2>
+
+<p>Интерфейс <code>Beacon</code> отвечает потребностям аналитического и диагностического кода, который обычно пытается отправить данные на веб-сервер перед выгрузкой документа. Отправка данных хоть на секунду раньше может привести к упущенной возможности сбора данных. В любом случае, обеспечение того, чтобы данные отправлялись во время выгрузки документа, является чем-то, что традиционно было трудным для разработчиков.</p>
+
+<p>Пользовательские браузеры обычно игнорируют асинхронные  {{domxref("XMLHttpRequest","XMLHttpRequests")}} сделанные в обработчике выгрузки. Для решения этой проблемы, аналитический и диагностический код обычно создает синхронный {{domxref("XMLHttpRequest")}} в обработчике {{event("unload")}} или {{event("beforeunload")}} для отправки данных. Синхронный {{domxref("XMLHttpRequest")}} заставляет браузер отложить выгрузку документа и делает следующую навигацию более медленной. Следующая страница ничего не может сделать, чтобы избежать этого ощущения низкой производительности при загрузке страницы. </p>
+
+<p>Есть и другие методы, используемые для проверки предоставления данных. Одним из таких методов является задержка отправки данных путем создания элемента Image и установки его атрибута <code>src</code> в обработчике выгрузки. Поскольку большинство браузеров откладывают выгрузку для завершения ожидающей загрузки изображения, данные могут быть отправлены во время выгрузки. Другой метод заключается в создании неработающего цикла, который  в течение нескольких секунд будет висеть в обработчике выгрузки, чтобы задержать выгрузку и отправить данные на сервер.</p>
+
+<p>Эти методы представляют плохие шаблоны программирования, некоторые из них ненадежны и приводят к восприятию плохой производительности при загрузке страницы для следующей навигации. API-интерфейс Beacon предоставляет стандартный способ решения этих проблем.</p>
+
+<h2 id="Глобальный_контекст">Глобальный контекст</h2>
+
+<p>Интерфейс <code>Beacon API's</code> предоставляет метод {{domxref("Navigator.sendBeacon()")}}, который используется для отправки <em>beacon</em> данных  на сервер в <em>глобальный браузерный контекст</em>. Метод принимает два аргумента: URL и данные для отправки в запросе. Аргумент data является необязательным, и его тип может быть {{domxref ("ArrayBufferView")}}, {{domxref ("Blob")}}, {{domxref ("DOMString")}} или {{domxref (" FormData ")}}. Если браузер успешно поставил в очередь запрос на доставку, то метод возвращает <code>true</code> либо возвращает <code>false</code> в противном случае.</p>
+
+<h2 id="Рабочий_контекст">Рабочий контекст</h2>
+
+<p>Интерфейс <code>Beacon API's</code> предоставляет метод {{domxref("Navigator.sendBeacon()")}}, который используется для отправки <em>beacon</em> данных на сервер из <em>{{domxref("WorkerGlobalScope","worker global scope")}}</em>. Метод принимает два аргумента: URL-адрес и данные для отправки в запросе. Аргумент <code>data</code> является необязательным, и его тип может быть {{domxref("ArrayBufferView")}}, {{domxref("Blob")}}, {{domxref("DOMString")}}, или {{domxref("FormData")}}. Если браузер успешно поставил в очередь запрос на доставку, то метод возвращает <code>true</code> либо возвращает <code>false</code> в противном случае.</p>
+
+<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2>
+
+<p>The {{domxref("Navigator.sendBeacon","Navigator.sendBeacon()","Browser_compatibility")}} table indicates that method has relatively broad implementation.</p>
+
+<h2 id="Смотрите_также">Смотрите также</h2>
+
+<ul>
+ <li>{{domxref("WorkerGlobalScope")}}</li>
+ <li><a href="https://w3c.github.io/beacon/">Beacon standard</a></li>
+ <li><a href="http://caniuse.com/#search=beacon">Beacon CanIUse data</a></li>
+ <li><a href="https://ehsanakhgari.org/blog/2015-04-08/intercepting-beacons-through-service-workers">Intercepting beacons through service workers</a>; Ehsan Akhgari; 2015-Apr-08</li>
+</ul>