リソースタイミング

W3C 候補勧告草案

この文書の詳細
このバージョン:
https://www.w3.org/TR/2026/CRD-resource-timing-20260217/
最新公開バージョン:
https://www.w3.org/TR/resource-timing/
最新編集者草案:
https://w3c.github.io/resource-timing/
履歴:
https://www.w3.org/standards/history/resource-timing/
コミット履歴
実装レポート:
https://w3c.github.io/test-results/resource-timing/all.html
編集者:
Yoav Weiss (Google)
(Google)
以前の編集者:
Ilya Grigorik (Google) (2021年1月まで)
(Microsoft Corp.) (2021年1月まで)
(Google Inc.) (2014年12月まで)
(Microsoft Corp.) (2014年2月まで)
Zhiheng Wang (Google Inc.) (2012年7月まで)
Anderson Quach (Microsoft Corp.) (2011年3月まで)
フィードバック:
GitHub w3c/resource-timing (プルリクエスト, 新しいイシュー, オープンイシュー)
public-web-perf@w3.org 件名 [ResourceTiming] (アーカイブ)
ブラウザー対応状況:
caniuse.com

概要

この仕様は、ウェブアプリケーションがドキュメント内のリソースの完全なタイミング情報にアクセスするためのインターフェイスを定義します。

この文書のステータス

このセクションは、公開時点でのこの文書のステータスについて説明しています。現行標準の一覧やこの技術レポートの最新改訂版は、 W3C 標準と草案インデックスで確認できます。

この文書は、Web パフォーマンス作業グループによって、 勧告プロセスを用いて候補勧告草案として公開されました。

候補勧告としての公開は、W3C およびその会員による支持を意味するものではありません。候補勧告草案は、作業グループが次の候補勧告スナップショットに含める予定の変更を前回の候補勧告から統合したものです。

この文書は草案であり、いつでも更新、置換、または廃止される可能性があります。この文書を進行中の作業以外として引用するのは不適切です。

この文書は、 W3C 特許ポリシー の下で運営されるグループによって作成されました。 W3Cは、 グループの成果物に関連するパテント開示の公開リスト を管理しています。そのページにはパテント開示方法の説明もあります。個人が本当にパテントの存在を知っている場合、そのパテントが 必須のクレーム を含むと考える場合は、W3C 特許ポリシー第6節に従って情報を開示しなければなりません。

この文書は 2025年8月18日 W3C プロセス文書によって管理されています。

1. はじめに

このセクションは規範的ではありません。

ユーザーの待ち時間(レイテンシ)は、Webアプリケーションの重要な品質指標です。 JavaScriptベースの手法は、アプリケーション内でユーザーの待ち時間を包括的に計測できますが、多くの場合、エンドツーエンドの全体的なレイテンシを把握することはできません。 この文書では、JavaScriptによるメカニズムがドキュメント上のリソースに関する完全なタイミング情報を収集できるようにする PerformanceResourceTiming インターフェイスを導入します。 Navigation Timing 2 [NAVIGATION-TIMING-2]は、ナビゲーションに関連する追加のタイミング情報を提供するために本仕様を拡張します。

例えば、以下のJavaScriptは、リソースの取得に要する時間を計測する単純な例です。

<!doctype html>
<html>
  <head>
  </head>
  <body onload="loadResources()">
    <script>
        function loadResources()
        {
          var start = new Date().getTime();
          var image1 = new Image();
          var resourceTiming = function() {
              var now = new Date().getTime();
              var latency = now - start;
              alert("End to end resource fetch: " + latency);
          };

          image1.onload = resourceTiming;
          image1.src = 'https://www.w3.org/Icons/w3c_main.png';
        }
    </script>
    <img src="https://www.w3.org/Icons/w3c_home.png">
  </body>
</html>

このスクリプトはリソースの取得にかかる時間を計測できますが、各フェーズで費やされた時間を分解して計測することはできません。さらに、 マークアップで記述されたリソースの取得時間を簡単に計測することもできません。

ユーザー体験に関する完全な情報のニーズに対応するため、本仕様では PerformanceResourceTimingインターフェイスを導入しています。 このインターフェイスにより、JavaScriptメカニズムはアプリケーション内でクライアントサイドのレイテンシを完全に計測できます。 このインターフェイスを使えば、先ほどの例をユーザーが体感するリソースのロード時間の計測に書き換えることが可能です。

次のスクリプトは、ページ内のすべてのリソース(マークアップで定義されたものも含む)を取得するのにかかる時間を計算します。 この例では、ページが https://www.w3.org にホストされていると仮定しています。また、 PerformanceResourceTimingインターフェイスを使えば、 リソース取得の各フェーズにかかる時間も測定できます。

<!doctype html>
<html>
  <head>
  </head>
  <body onload="loadResources()">
    <script>
      function loadResources()
      {
          var image1 = new Image();
          image1.onload = resourceTiming;
          image1.src = 'https://www.w3.org/Icons/w3c_main.png';
      }

      function resourceTiming()
      {
          var resourceList = window.performance.getEntriesByType("resource");
          for (i = 0; i < resourceList.length; i++)
          {
              if (resourceList[i].initiatorType == "img")
              {
                alert("End to end resource fetch: " + (resourceList[i].responseEnd - resourceList[i].startTime));
              }
          }
      }
    </script>
    <img id="image0" src="https://www.w3.org/Icons/w3c_home.png">
  </body>
</html>

2. 適合性

非規範的と記載されたセクションだけでなく、この仕様書のすべての著者向けガイドライン、図、例、注記も非規範的です。それ以外のすべてが規範的です。

この文書中のキーワード MAYMUST、および SHOULD は、 BCP 14 [RFC2119] [RFC8174] に記載されている通り、全て大文字で表示されている場合のみそれぞれの意味で解釈されます。

アルゴリズムの一部として命令形で記述された要件(例えば「先頭のスペース文字をすべて削除する」や「falseを返してこれらの手順を中止する」など)は、アルゴリズムの導入に用いられたキーワード("MUST"、"SHOULD"、"MAY"など)の意味で解釈されます。

属性、メソッド、オブジェクトに対する要件として記述されている適合要件の一部は、ユーザーエージェントに対する要件として解釈されます。

アルゴリズムや具体的な手順として記述されている適合要件は、最終的な結果が同等である限り、どのような方法で実装してもかまいません。(特に、この仕様で定義されているアルゴリズムは理解しやすいことを目的としており、性能を意図したものではありません。)

3. 用語

実際にはインターフェイスである Foo に対して、「Foo オブジェクト」という構文が用いられる場合がありますが、これはより正確には「インターフェイス Foo を実装するオブジェクト」を意味します。

本仕様全体では、すべての時間値はドキュメントのナビゲーション開始からのミリ秒単位で測定されます [HR-TIME]。例えば、 ドキュメントのナビゲーション開始は、時刻0で発生します。

この時間の定義は、High Resolution Time仕様 [HR-TIME]に基づいており、Navigation Timing仕様 [NAVIGATION-TIMING-2]で用いられている、 時間が1970年1月1日午前0時(UTC)からのミリ秒で測定される定義とは異なります。

4. リソースタイミング

4.1 はじめに

このセクションは規範的ではありません。

PerformanceResourceTiming インターフェイスは、 フェッチされた http(s) リソースのタイミング計測を可能にします。例えば、このインターフェイスは XMLHttpRequest オブジェクト [XHR] や、 iframeimgscriptobjectembedlink (linkタイプが stylesheetの場合)などの HTML要素 [HTML] や、 svg などの SVG要素 [SVG11]、 EventSource に対して利用可能です。

4.2 PerformanceResourceTiming インターフェイスに含まれるリソース

このセクションは規範的ではありません。

非nullのclientによって Requestフェッチされると、 PerformanceResourceTiming オブジェクトとして グローバルオブジェクトPerformance Timelineに含まれます。 ただし、フェッチ処理の一部として タイムラインから除外される場合は含まれません。HTTPキャッシュから取得されたリソースも PerformanceResourceTiming オブジェクトとして Performance Timelineに含まれます。 フェッチが開始されたが後に中断された(例:ネットワークエラー等)リソースも、 開始・終了タイミングとともに PerformanceResourceTiming オブジェクトとして Performance Timelineに含まれます。

例:

4.3 PerformanceResourceTiming インターフェイス

WebIDL[Exposed=(Window,Worker)]
interface PerformanceResourceTiming : PerformanceEntry {
    readonly attribute DOMString initiatorType;
    readonly attribute DOMString deliveryType;
    readonly attribute ByteString nextHopProtocol;
    readonly attribute DOMHighResTimeStamp workerStart;
    readonly attribute DOMHighResTimeStamp redirectStart;
    readonly attribute DOMHighResTimeStamp redirectEnd;
    readonly attribute DOMHighResTimeStamp fetchStart;
    readonly attribute DOMHighResTimeStamp domainLookupStart;
    readonly attribute DOMHighResTimeStamp domainLookupEnd;
    readonly attribute DOMHighResTimeStamp connectStart;
    readonly attribute DOMHighResTimeStamp connectEnd;
    readonly attribute DOMHighResTimeStamp secureConnectionStart;
    readonly attribute DOMHighResTimeStamp requestStart;
    readonly attribute DOMHighResTimeStamp finalResponseHeadersStart;
    readonly attribute DOMHighResTimeStamp firstInterimResponseStart;
    readonly attribute DOMHighResTimeStamp responseStart;
    readonly attribute DOMHighResTimeStamp responseEnd;
    readonly attribute DOMHighResTimeStamp workerRouterEvaluationStart;
    readonly attribute DOMHighResTimeStamp workerCacheLookupStart;
    readonly attribute DOMString workerMatchedRouterSource;
    readonly attribute DOMString workerFinalRouterSource;
    readonly attribute unsigned long long  transferSize;
    readonly attribute unsigned long long  encodedBodySize;
    readonly attribute unsigned long long  decodedBodySize;
    readonly attribute unsigned short responseStatus;
    readonly attribute RenderBlockingStatusType renderBlockingStatus;
    readonly attribute DOMString contentType;
    readonly attribute DOMString contentEncoding;
    [Default] object toJSON();
};

PerformanceResourceTiming には関連付けられた DOMString の initiator type がある。

PerformanceResourceTiming には関連付けられた DOMString の delivery type がある。

PerformanceResourceTiming には関連付けられた DOMString の requested URL がある。

PerformanceResourceTiming には関連付けられた DOMString の cache mode (空の文字列、"local"、または "validated")。

PerformanceResourceTiming には fetch timing infotiming info が関連付けられています。

PerformanceResourceTiming には response body inforesource info が関連付けられています。

PerformanceResourceTiming には statusresponse status が関連付けられています。

PerformanceResourceTiming には RenderBlockingStatusTyperender-blocking status が関連付けられています。

toJSON が呼び出されたときは、 default toJSON stepsPerformanceResourceTiming に対して実行します。

initiatorType のgetter手順は、initiator typethis に対して返します。

initiatorType は次のいずれかの値を返します:

  • "navigation":リクエストが navigation request の場合
  • "body":リクエストが body 要素の background 属性の処理によるもので、すでに廃止されています。
  • "css"。リクエストが @import url()background: url() のような CSS の url() 指令を処理した結果である場合。 [CSS-VALUES]

    注: CSS において @font-face で指定されたフォント・リソースへのリクエストは、CSS 指令を処理した結果である。したがって、このフォント・リソースの initiatorType"css" である。

  • "script":リクエストが script(クラシック scriptmodule scriptWorker)の ロードによる場合
  • "xmlhttprequest":リクエストが XMLHttpRequest の処理による場合
  • "font":リクエストがフォントの処理による場合。これは、フォントが追加リソースをリクエストするときなど (例:Incremental Font Transfer利用時)に発生します。
  • "fetch":リクエストが fetch() メソッドの処理による場合
  • "beacon":リクエストが sendBeacon() メソッドの処理による場合[BEACON]
  • "video":リクエストが video 要素の postersrc の処理による場合
  • "audio":リクエストが audio 要素の src の処理による場合
  • "track":リクエストが track 要素の src の処理による場合
  • "img":リクエストが img 要素の srcsrcset の処理による場合
  • "image":リクエストが image 要素の処理による場合。[SVG2]
  • "input":リクエストが input 要素( typeimage )の処理による場合
  • "ping":リクエストが a 要素の ping の処理による場合
  • "iframe":リクエストが iframesrc の処理による場合
  • "frame":リクエストが frame のロードによる場合
  • "embed":リクエストが embed 要素の src の処理による場合
  • "link":リクエストが link 要素の処理による場合
  • "object":リクエストが object 要素の処理による場合
  • "early-hints":リクエストが Early hints レスポンスの処理による場合
  • "other":上記のいずれにも該当しない場合

initiatorTypeの設定は、リソースタイミングエントリが報告されるさまざまな場所(例えばfetch標準)で行われます。

deliveryType のgetter手順は、 delivery typethis に対して返します。

deliveryTypeは次のいずれかの値を返します:

  • "cache"cache mode が空文字列でない場合
  • 上記に該当しない場合は空文字列""

この値は、今後の仕様更新で拡張される予定です(例:プリロードリソースやプリフェッチナビゲーションリクエストの記述)。

workerStart のgetter手順は、fetchタイムスタンプの変換thistiming infofinal service worker start time および relevant global object に対して実行します。詳細は HTTP fetch を参照してください。

redirectStart のgetter手順は、fetchタイムスタンプの変換thistiming inforedirect start time および relevant global object に対して実行します。詳細は HTTP-redirect fetch を参照してください。

redirectEnd のgetter手順は、fetchタイムスタンプの変換thistiming inforedirect end time および relevant global object に対して実行します。詳細は HTTP-redirect fetch を参照してください。

fetchStart のgetter手順は、fetchタイムスタンプの変換thistiming infopost-redirect start time および relevant global object に対して実行します。詳細は HTTP fetch を参照してください。

domainLookupStart のgetter手順は、fetchタイムスタンプの変換thistiming infofinal connection timing infodomain lookup start time および relevant global object に対して実行します。詳細は 接続タイミング情報の記録 を参照してください。

domainLookupEnd のgetter手順は、fetchタイムスタンプの変換thistiming infofinal connection timing infodomain lookup end time および relevant global object に対して実行します。詳細は 接続タイミング情報の記録 を参照してください。

connectStart のgetter手順は、fetchタイムスタンプの変換thistiming infofinal connection timing infoconnection start time および relevant global object に対して実行します。詳細は 接続タイミング情報の記録 を参照してください。

connectEnd のgetter手順は、fetchタイムスタンプの変換thistiming infofinal connection timing infoconnection end time および relevant global object に対して実行します。詳細は 接続タイミング情報の記録 を参照してください。

secureConnectionStart のgetter手順は、fetchタイムスタンプの変換thistiming infofinal connection timing infosecure connection start time および relevant global object に対して実行します。詳細は 接続タイミング情報の記録 を参照してください。

nextHopProtocol のgetter手順は、 isomorphic decodethistiming infofinal connection timing infoALPN negotiated protocol に対して実行します。詳細は 接続タイミング情報の記録 を参照してください。

Issue 221は nextHopProtocolのサポートを削除することを提案しています。これは、ユーザーのネットワーク構成に関する詳細を暴露する可能性があるためです。

requestStart のgetter手順は、fetchタイムスタンプの変換thistiming infofinal network-request start time および relevant global object に対して実行します。詳細は HTTP fetch を参照してください。

firstInterimResponseStart のgetter手順は、 fetchタイムスタンプの変換thistiming infofirst interim network-response start time および relevant global object に対して実行します。詳細は HTTP fetch を参照してください。

finalResponseHeadersStart のgetter手順は、 fetchタイムスタンプの変換thistiming infofinal network-response start time および relevant global object に対して実行します。詳細は HTTP fetch を参照してください。

responseStart のgetter手順は、 thisfirstInterimResponseStart が 0 でない場合はそれを返し、そうでなければ thisfinalResponseHeadersStart を返します。

responseEnd のgetter手順は、fetchタイムスタンプの変換thistiming infoend time および relevant global object に対して実行します。詳細は fetch を参照してください。

encodedBodySize のgetter手順は、 thisresource infoencoded size を返します。

decodedBodySize のgetter手順は、 thisresource infodecoded size を返します。

transferSize のgetter手順は以下の通りです:

  1. thiscache mode が "local" の場合は 0 を返す。

  2. thiscache mode が "validated" の場合は 300 を返す。

  3. thisresponse body infoencoded size に 300 を加えて返す。

    transferSizeに加算される定数値は、HTTPヘッダーの総バイト数を公開するかわりです。これは特定のクッキーの存在を暴露する可能性があるためです。詳細は このissue を参照してください。

responseStatus のgetter手順は、 thisresponse status を返します。

responseStatusFetch で決定されます。クロスオリジンの no-cors リクエストの場合、 レスポンスは opaque filtered response となるため、0 になります。

contentType のgetter手順は、 thisresource infocontent type を返します。

contentEncoding のgetter手順は、 thisresource infocontent encoding を返します。

renderBlockingStatus のgetter手順は、 blocking を返します。 ただし thistiming inforender-blocking が true の場合のみで、 それ以外は non-blocking を返します。

workerRouterEvaluationStart の getter 手順は、次を返すことである: thistiming infoservice worker timing infoworker router evaluation start

workerCacheLookupStart の getter 手順は、次を返すことである: thistiming infoservice worker timing infoworker cache lookup start

workerMatchedRouterSource の getter 手順は、次を返すことである: thistiming infoservice worker timing infoworker matched router source

workerFinalRouterSource の getter 手順は、 return thistiming infoservice worker timing infoworker final router source を返すことである。

PerformanceResourceTiming を実装するユーザーエージェントは "resource"supportedEntryTypes に含める必要があります。これにより、開発者はResource Timingのサポートを検出できます。

4.3.1 RenderBlockingStatusType 列挙型

WebIDLenum RenderBlockingStatusType {
    "blocking",
    "non-blocking"
};

値の定義は以下の通りです:

blocking
リソースは、レンダリングをブロックする可能性があります。
non-blocking
リソースはレンダリングをブロックしません。

4.4 Performance インターフェイスへの拡張

ユーザーエージェントは、PerformanceResourceTiming オブジェクトとして Performance Timeline [PERFORMANCE-TIMELINE-2] に含まれるリソース数を 制限することが できます。 本セクションは、Performance インターフェイスに、PerformanceResourceTiming オブジェクトの保存数を制御する機能を追加します。

推奨される PerformanceResourceTiming オブジェクトの最小数は 250 ですが、これはユーザーエージェントによって変更可能です。 この制限の変更は setResourceTimingBufferSize を呼び出して要求できます。

ECMAScript グローバル環境は次を持ちます:

WebIDLpartial interface Performance {
          undefined clearResourceTimings ();
          undefined setResourceTimingBufferSize (unsigned long maxSize);
          attribute EventHandler onresourcetimingbufferfull;
        };

Performance インターフェイスは [HR-TIME] で定義されています。

clearResourceTimings メソッドは次の手順を実行します:

  1. PerformanceResourceTiming オブジェクトを performance entry buffer からすべて削除します。
  2. リソースタイミングバッファ現在サイズ を0に設定します。

setResourceTimingBufferSize メソッドは次の手順を実行します:

  1. リソースタイミングバッファサイズ制限maxSize パラメータに設定します。 maxSize パラメータが リソースタイミングバッファ現在サイズ より小さい場合、 PerformanceResourceTiming オブジェクトは performance entry buffer から削除しません。

onresourcetimingbufferfull 属性は、 以下で説明する resourcetimingbufferfull イベントのイベントハンドラーです。

リソースタイミングエントリ追加可能か を判定するには、次の手順を実行します:

  1. リソースタイミングバッファ現在サイズ リソースタイミングバッファサイズ制限 より小さい場合、trueを返す。
  2. falseを返す。

PerformanceResourceTimingエントリ追加new entry)を performance entry buffer に追加するには、次の手順を実行します:

  1. リソースタイミングエントリ追加可能か がtrueで リソースタイミングバッファフルイベント保留フラグ がfalseの場合、以下を実行:
    1. new entryperformance entry buffer に追加
    2. リソースタイミングバッファ現在サイズ を1増やす
    3. 終了
  2. リソースタイミングバッファフルイベント保留フラグ が falseの場合、以下を実行:
    1. リソースタイミングバッファフルイベント保留フラグ を trueに設定
    2. タスクをキューに追加 performance timeline task source)して バッファフルイベント発火 を実行
  3. new entryリソースタイミングセカンダリバッファ に追加
  4. リソースタイミングセカンダリバッファ現在サイズ を1増やす

セカンダリバッファのコピー は次の手順で実行します:

  1. リソースタイミングセカンダリバッファ が空でなく リソースタイミングエントリ追加可能か がtrueの場合、以下を繰り返す:
    1. entryPerformanceResourceTiming のうち最も古いものとして リソースタイミングセカンダリバッファから取得
    2. entryperformance entry buffer の末尾に追加
    3. リソースタイミングバッファ現在サイズ を1増やす
    4. entryリソースタイミングセカンダリバッファ から削除
    5. リソースタイミングセカンダリバッファ現在サイズ を1減らす

バッファフルイベント発火 は次の手順で実行します:

  1. リソースタイミングセカンダリバッファ が空でない限り、以下を繰り返す:
    1. number of excess entries beforeリソースタイミングセカンダリバッファ現在サイズ とする
    2. リソースタイミングエントリ追加可能か がfalseの場合、 イベントを発火(名前:resourcetimingbufferfull)、 Performance オブジェクトに対して
    3. セカンダリバッファのコピー を実行
    4. number of excess entries afterリソースタイミングセカンダリバッファ現在サイズ とする
    5. number of excess entries beforenumber of excess entries after 以下の場合、 リソースタイミングセカンダリバッファ をすべて削除し、 リソースタイミングセカンダリバッファ現在サイズ を0に設定し、 この手順を中止
  2. リソースタイミングバッファフルイベント保留フラグ を falseに設定

    これは resourcetimingbufferfull イベントハンドラーが バッファに追加するリソースより多くのバッファ領域を追加しない場合、 余分なエントリがバッファから破棄されることを意味します。 開発者は resourcetimingbufferfull イベントハンドラーで clearResourceTimings を呼び出すか、十分にバッファ拡張 (setResourceTimingBufferSize の呼び出し)するようにしてください。

4.5 クロスオリジン・リソース

4.5.1 はじめに

この節は非規範である。

Fetch で詳述されているとおり、 クロスオリジン・リソースに対するリクエストは PerformanceResourceTiming オブジェクトとして Performance Timeline に含まれる。

クロスオリジン・リソースに対して timing allow check アルゴリズムが失敗した場合、 エントリは 不透明エントリ となる。そのような エントリでは、他に公開されていないクロスオリジン・データの漏えいを防ぐため、 属性の大部分がマスクされる。したがって、 不透明エントリ では、次の 属性は常に 0 または空文字列を返す: redirectStart, redirectEnd, workerStart, domainLookupStart, domainLookupEnd, connectStart, connectEnd, requestStart, firstInterimResponseStart, finalResponseHeadersStart, responseStart, secureConnectionStart, および nextHopProtocol.

contentType, encodedBodySize, および decodedBodySize のようないくつかのプロパティは、レスポンスが CORS-cross-origin であるとき、 0(contentType の場合は空文字列) に設定される。 transferSize は、 timing allow checkCORS-cross-origin 状態の双方の影響を受ける。

service workerrespondWith() を用いて処理するリクエストでは、報告されるタイミング・データは、 service worker 自身の内部ネットワーク活動ではなく、 クライアントと service worker の相互作用を反映する。 例えば、service worker は同一オリジンのリクエストに対してクロスオリジンのレスポンスを返すことも、その逆もあり得るし、 どちらに対してもキャッシュ済みまたは合成(synthetic)レスポンスを返すこともある。 このため、service worker から転送されたリソースは、リソースの取得の全体像を示すものではなく、 timing allow check を通過しない。 これらの fetch について完全な情報を得るには、service worker 自身の performance timeline を調べることができる。 [SERVICE-WORKERS]

詳細は HTTP Fetch #4 を参照 — timing allow check は、service worker からのレスポンスがない場合にのみ実行される。 さらに、respondWith() アルゴリズムで複製(clone)される response は、内部 fetch の fetch timing info を保持しない。というのも、その情報は response ではなく fetch に付随するためである。

4.6 Timing-Allow-Origin レスポンス・ヘッダー

サーバー側アプリケーションは、ユーザーエージェントが、指定された文書オリジンに対して、 これらのクロスオリジン制限により 0 となっていた属性値を完全に公開できるようにするため、 Timing-Allow-Origin HTTP レスポンス・ヘッダーを返してよい。

Timing-Allow-Origin HTTP レスポンス・ヘッダー・フィールドは、 クロスオリジン制限により 0 となっていた属性値を参照することが許可される オリジンを示すポリシーを伝達するために使用できる。 ヘッダーの値は、次の ABNF [RFC5234](List Extension を使用、[RFC9110])で表される:

Timing-Allow-Origin = 1#( origin-or-null / wildcard )

送信者は Timing-Allow-Origin ヘッダー・フィールドを複数生成してもよい。 受信者は、複数の Timing-Allow-Origin ヘッダー・フィールドを、 後続の各フィールド値を順に結合フィールド値へ付加し、コンマで区切ることで、結合してもよい。

ユーザーエージェントは、Timing-Allow-Origin HTTP レスポンス・ヘッダー・フィールドがあっても、 なおクロスオリジン制限を強制し、transferSize、encodedBodySize、decodedBodySize 属性を 0 に設定してもよい。そうする場合、deliveryType を "" に設定してもよい。

Timing-Allow-Origin ヘッダーは、 属性を適切に計算するために FETCH で処理される。

Note

Timing-Allow-Origin ヘッダーは、キャッシュされたレスポンスの一部として到着することがある。 キャッシュ再検証の場合、RFC 7234 によれば、 ヘッダーの値は再検証レスポンスに由来することがあり、そこに存在しない場合は、 元のキャッシュ済みリソースに由来し得る。

Note

Issues 222 および 223 は、 その利用を制限するために Timing-Allow-Origin から wildcard サポートを削除することを 提案している。

4.7 IANA に関する考慮事項

この節は Timing-Allow-Origin暫定メッセージ・ヘッダー として登録する。

ヘッダー・フィールド名:
Timing-Allow-Origin
適用可能なプロトコル:
http
ステータス:
provisional
著者/変更管理者:
W3C
仕様書文書:
4.6 Timing-Allow-Origin レスポンス・ヘッダー

5. リソース・タイミング属性

この節は非規範である。

次の図は、 PerformanceResourceTiming インターフェイスで定義されるタイミング属性を示す。 括弧内の属性は、 クロスオリジン・リソースを 取得 する際に利用できない場合がある。ユーザーエージェントは タイミングの合間に内部処理を行うことがあり、 その結果、タイミング間に非規範な間隔が生じ得る。

1 この図は、PerformanceResourceTiming インターフェイスで定義されるタイミング属性を示す。 括弧内の属性は、リソースが timing allow check アルゴリズムに失敗した場合に利用できない可能性があることを示す。
Resource Timing attributes

6. リソース・タイミング・エントリの作成

fetch timing info timingInfo、 DOMString requestedURL、DOMString initiatorTypeグローバル・オブジェクト global、文字列 cacheModeresponse body info bodyInfostatus responseStatus、 および省略可能な 文字列 deliveryType(既定では空文字列) が与えられたときに リソース・タイミングをマークする には、 次の手順を実行する:

  1. PerformanceResourceTiming オブジェクト entry を、 globalrealm 内に作成する。
  2. initiatorTyperequestedURLtimingInfocacheModebodyInforesponseStatus、および deliveryType が与えられたとき、 entry に対して リソース・タイミング・エントリをセットアップする
  3. キューに入れるentry
  4. 追加するentryglobalperformance entry buffer に追加する。

DOMString initiatorType、DOMString requestedURLfetch timing info timingInfo、DOMString cacheModeresponse body info bodyInfostatus responseStatus、 および省略可能な DOMString deliveryType(既定では空文字列) が与えられたときに PerformanceResourceTiming entry に対して リソース・タイミング・エントリをセットアップする には、 次の手順を実行する:

  1. cacheMode が空文字列、 "local"、または "validated" であることを表明する。
  2. global を、 entry関連する グローバル・オブジェクト とする。
  3. 初期化するentry を、 global が与えられたときの timingInfo開始時刻変換 した結果、 "resource"、requestedURL、 および global が与えられたときの timingInfo終了時刻変換 した結果で与えられる結果に基づいて行う。
  4. entryinitiator typeinitiatorType に設定する。
  5. entryrequested URLrequestedURL に設定する。
  6. entrytiming infotimingInfo に設定する。
  7. entryresponse body infobodyInfo に設定する。
  8. entrycache modecacheMode に設定する。
  9. entryresponse statusresponseStatus に設定する。
  10. deliveryType が空文字列であり、かつ cacheMode がそうでない場合、 deliveryType を "cache" に設定する。
  11. entrydelivery typedeliveryType に設定する。

DOMHighResTimeStamp tsグローバル・オブジェクト global が与えられたときに fetch timestamp を変換する には、次のとおりにする:

  1. ts が 0 の場合、0 を返す。
  2. そうでなければ、tsglobal が与えられたときの 相対的な高分解能粗時間 を返す。

7. セキュリティに関する考慮事項

この節は非規範である。

PerformanceResourceTiming インターフェイスは、 そのリソースを要求した任意のウェブページまたはワーカーに対して、 リソースのタイミング情報を公開する。PerformanceResourceTiming インターフェイスへの アクセスを制限するため、 同一オリジン ポリシーが既定で強制され、 HTTP fetch に記述されるとおり、 いくつかの属性は 0 に設定される。 リソース提供者は、アクセスが許可されるドメインを指定する Timing-Allow-Origin HTTP レスポンス・ヘッダーを追加することにより、 リソースに関するすべてのタイミング情報が収集されることを明示的に許可できる。

8. プライバシーに関する考慮事項

この節は非規範である。

統計的フィンガープリンティングは、悪意のあるウェブサイトが、 サードパーティのウェブサイト上のリソースについてキャッシュ・ヒット/ミスのタイミングを測定することで、 ユーザーがそのサードパーティ・ウェブサイトを訪問したかどうかを判定し得る、というプライバシー上の懸念である。 PerformanceResourceTiming インターフェイスは文書内のリソースに関するタイミング情報を提供するが、 リソースに対する load イベントでも、限定的な形ではキャッシュ・ヒット/ミスを判定するためのタイミング測定をすでに行える。 また、HTTP Fetch におけるクロスオリジン制限は、追加情報の漏えいを防ぐ。

A. 謝辞

本作業への貢献に対し、Anne Van Kesteren、Annie Sullivan、Arvind Jain、Boris Zbarsky、Darin Fisher、Jason Weber、Jonas Sicking、James Simonsen、 Karen Anderson、Kyle Scholz、Nic Jansma、Philippe Le Hegaret、 Sigbjørn Vik、Steve Souders、Todd Reifsteck、Tony Gentilcore、William Chan、Alex Christensen に感謝する。

B. 参考文献

B.1 規範的参照文献

[dom]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[FETCH]
Fetch Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://fetch.spec.whatwg.org/
[HR-TIME]
High Resolution Time. Yoav Weiss. W3C. 7 November 2024. W3C Working Draft. URL: https://www.w3.org/TR/hr-time-3/
[HTML]
HTML Standard. Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[NAVIGATION-TIMING-2]
Navigation Timing Level 2. Yoav Weiss; Noam Rosenthal. W3C. 5 December 2025. W3C Working Draft. URL: https://www.w3.org/TR/navigation-timing-2/
[PERFORMANCE-TIMELINE-2]
Performance Timeline. Nicolas Pena Moreno. W3C. 21 May 2025. CRD. URL: https://www.w3.org/TR/performance-timeline/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC2397]
The "data" URL scheme. L. Masinter. IETF. August 1998. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc2397
[RFC5234]
Augmented BNF for Syntax Specifications: ABNF. D. Crocker, Ed.; P. Overell. IETF. January 2008. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc5234
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[RFC9110]
HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[SERVICE-WORKERS]
Service Workers Nightly. Monica CHINTALA; Yoshisato Yanagisawa. W3C. 26 January 2026. CRD. URL: https://www.w3.org/TR/service-workers/
[WEBIDL]
Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL: https://webidl.spec.whatwg.org/

B.2 参考情報(参考文献)

[BEACON]
Beacon. Ilya Grigorik; Alois Reitbauer. W3C. 3 August 2022. CRD. URL: https://www.w3.org/TR/beacon/
[CSS-VALUES]
CSS Values and Units Module Level 4. Tab Atkins Jr.; Elika Etemad. W3C. 12 March 2024. W3C Working Draft. URL: https://www.w3.org/TR/css-values-4/
[EARLY_HINTS]
Early hints. URL: https://httpwg.org/specs/rfc8297.html
[INCREMENTAL_FONT_TRANSFER]
Incremental Font Transfer. URL: https://www.w3.org/TR/IFT/
[SVG11]
Scalable Vector Graphics (SVG) 1.1 (Second Edition). Erik Dahlström; Patrick Dengler; Anthony Grasso; Chris Lilley; Cameron McCormack; Doug Schepers; Jonathan Watt; Jon Ferraiolo; Jun Fujisawa; Dean Jackson et al. W3C. 16 August 2011. W3C Recommendation. URL: https://www.w3.org/TR/SVG11/
[SVG2]
Scalable Vector Graphics (SVG) 2. Amelia Bellamy-Royds; Bogdan Brinza; Chris Lilley; Dirk Schulze; David Storey; Eric Willigers. W3C. 4 October 2018. W3C Candidate Recommendation. URL: https://www.w3.org/TR/SVG2/
[XHR]
XMLHttpRequest Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://xhr.spec.whatwg.org/