[10] [[HTML構文解析器]]の [DFN[[[preload scanner]]]] は、
[[構文解析器]]本体の処理に先立って予備的な[[構文解析]]を行い、
参照されている外部の[[資源]]の[[ネットワーク]]からの読み込みを予め行うものです。

[11] [[HTML]] では [CODE(HTMLe)@en[[[script]]]] [[要素]]内の[[スクリプト]]から
[CODE(JS)@en[[[document.write]]]] を呼び出すことによって[[構文解析器]]に干渉できるため、
[[スクリプト]]が完了するまで [CODE(HTMLe)@en[[[script]]]] [[要素]]より先の[[構文解析]]を進めることができません。
[CODE(HTMLe)@en[[[script]]]] [[要素]]より先で外部の[[資源]]が参照されている場合、
その読み込みは[[スクリプト]]実行の完了を待つ必要があります。
[[prealod scanner]] はこの読み込み待ち時間を節約するために導入されました。

* 標準化

[13] [[preload scanner]] の動作やその存在自体も[[著者]]から直接に観察可能ではありませんから、
[[Web]] 関連の仕様書の要件としては記述されていません。

;; [15] 厳密には[[鯖側]]でアクセスの有無とタイミングを確認すれば、
[[著者]]から観測可能なこともあります。しかし [[preload scanner]] 
に限らずネットワークアクセスの有無やタイミング、厳密な順序関係などはネットワークの輻輳状態や
[[OS]] のプロトコルスタックの実装と状態、その他様々な要因で変動しますから、
それによって[[相互運用性]]に影響が出るとは考えにくく、
標準化の対象にはなっていません。

[16] しかし [[preload scanner]] との整合性は新機能の導入時には常に考慮されています。

[17] とはいえあくまで [[preload scanner]] は実装のパフォーマンス向上戦略の1つに過ぎず、
[[構文解析器]]の必須の構成要素ではありません。すべての [[Webブラウザー]]が
[[preload scanner]] を有しているわけではありませんし、その必要もありません。



* 関連

[18] [CODE(HTML)@en[[[rel=preload]]]] や [CODE(HTML)@en[[[<video preload>]]]]
とは直接関係ありません。

* 歴史

[12] [[preload scanner]] ははじめ [[WebKit]] ([[Blink]] の [[fork]] 前)
に実装され、後に [[Gecko]] でも実装されました。

[1] [CITE[''''''[''''''whatwg'''''']'''''' <imgset> responsive imgs proposition (Re: The src-N proposal)]]
( ([TIME[2013-11-12 20:52:48 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-November/041434.html>

[2] [CITE[''''''[''''''whatwg'''''']'''''' <imgset> responsive imgs proposition (Re: The src-N proposal)]]
( ([TIME[2013-11-12 20:52:48 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-November/041418.html>

[3] [CITE[''''''[''''''webkit-dev'''''']'''''' Regarding the preload scanner in WebKit]]
( ([TIME[2010-12-31 12:09:49 +09:00]] 版))
<https://lists.webkit.org/pipermail/webkit-dev/2010-December/015501.html>

[4] [CITE[Surfin' Safari - Blog Archive » Optimizing Page Loading in the Web Browser]]
( ([TIME[2014-07-21 03:30:35 +09:00]] 版))
<https://www.webkit.org/blog/166/optimizing-page-loading-in-web-browser/>

[5] [CITE[Preconnect, prefetch, prerender... - Google スライド]]
( ([TIME[2014-07-21 03:34:22 +09:00]] 版))
<https://docs.google.com/presentation/d/18zlAdKAxnc51y_kj-6sWLmnjl6TLnaru_WH0LJTjP-o/present#slide=id.g120f70e9a_096>

[6] [CITE@en[The picture Element]]
( ([TIME[2014-07-01 05:34:08 +09:00]] 版))
<http://picture.responsiveimages.org/#preloader>

[7] [CITE[Bug 106198 – PreloadScanner preloads external CSS with non-matching media attribute]]
( ([TIME[2014-07-21 03:37:50 +09:00]] 版))
<https://bugs.webkit.org/show_bug.cgi?id=106198>

[8] [CITE@ja[「Google Chrome 27」がベータ版に - 窓の杜]]
( ([[株式会社Impress Watch]] 著, [TIME[2014-07-21 03:45:21 +09:00]] 版))
<http://www.forest.impress.co.jp/docs/news/20130408_594976.html>

[9] [CITE@en[The “ch” unit, the Threaded HTML parser and Chromium 27 « Peter Beverloo]]
( ([TIME[2014-07-21 03:46:15 +09:00]] 版))
<http://peter.sh/2013/02/the-ch-unit-the-threaded-html-parser-and-chromium-27/>

[14] [CITE@en[REFERRER: Clarify interaction with preload scanner · f95dd19 · w3c/webappsec]]
( ([TIME[2014-08-13 12:16:50 +09:00]] 版))
<https://github.com/w3c/webappsec/commit/f95dd19ccc780a184ebe2baab69bc6ecae97ed07>


[19] [CITE[Fastersite: The WebKit PreloadScanner]]
( ([TIME[2014-01-24 08:35:48 +09:00]] 版))
<http://gent.ilcore.com/2011/01/webkit-preloadscanner.html>

[20] [CITE@en-US[CSS Preload Scanner in WebKit]]
( ([TIME[2014-09-03 04:17:07 +09:00]] 版))
<http://ariya.ofilabs.com/2013/04/css-preload-scanner-in-webkit.html>

[21] [CITE[チェンジセット 61366 – WebKit]]
( ([TIME[2014-09-03 04:18:45 +09:00]] 版))
<http://trac.webkit.org/changeset/61366>

[22] [CITE[Bug 40802 – Add CSS scanning to HTML5PreloadScanner]]
( ([TIME[2014-09-03 04:19:00 +09:00]] 版))
<https://bugs.webkit.org/show_bug.cgi?id=40802>

[23] [CITE@en[Introducing NoState Prefetch  |  Web  |  Google Developers]]
([TIME[2018-08-03 01:49:07 +09:00]])
<https://developers.google.com/web/updates/2018/07/nostate-prefetch>

[24] [CITE@en[Allow authors to apply new css features (like cascade layers) while linking stylesheets · Issue #240 · whatwg/meta · GitHub]], [TIME[2022-01-21T02:13:42.000Z]] <https://github.com/whatwg/meta/issues/240>

