Beacon API

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

Beacon API はウェブサーバーに非同期でブロッキングしないリクエストを送るのに使用されます。リクエストのレスポンスは求めません。XMLHttpRequestFetch API により行われるリクエストとは違い、ブラウザーはビーコンのリクエストをページがアンロードされる前に開始し、完了するまで処理することを保証します。

Beacon API の主な用途は、クライアント側でのイベントやセッションデータなどの統計情報をサーバーに送ることです。これまでは、ウェブサイトはこの用途に XMLHttpRequest を用いていましたが、ブラウザーがこれらの非同期リクエストを送信する保証がない状況がありました。(たとえば、ページがアンロードされようとしているとき) これを打開するため、ウェブサイトはリクエストを同期的にするなどの様々なテクニックに頼っていましたが、これらはレスポンシブ性に悪い影響がありました。ビーコンのリクエストは非同期かつ送信されることが保証されるので、パフォーマンスにおけるよい性質と信頼性を兼ね備えます。

この API を使用する動機と使用法の詳細は、navigator.sendBeacon() メソッドのドキュメントを参照してください。

メモ: この API は Web Workers では 使用できません。(WorkerNavigator 経由では公開されていません)

インターフェイス

この API では、1 個のメソッド navigator.sendBeacon() が定義されています。

このメソッドは、URL とリクエストで送るデータの 2 個の引数をとります。データの引数は省略可能で、型は TypedArrayDataViewBlob、文字列リテラル、オブジェクト、FormData オブジェクトが使用できます。ブラウザーが正常にリクエストを送信用のキューに入れた場合は true を返し、そうでない場合は false を返します。

仕様書

Specification
Beacon
# sendbeacon-method

ブラウザーの互換性

BCD tables only load in the browser

関連情報