preloader

preload scanner (構文解析器)

[10] HTML構文解析器preload scanner は、 構文解析器本体の処理に先立って予備的な構文解析を行い、 参照されている外部の資源ネットワークからの読み込みを予め行うものです。

[11] HTML では script 要素内のスクリプトから document.write を呼び出すことによって構文解析器に干渉できるため、 スクリプトが完了するまで script 要素より先の構文解析を進めることができません。 script 要素より先で外部の資源が参照されている場合、 その読み込みはスクリプト実行の完了を待つ必要があります。 prealod scanner はこの読み込み待ち時間を節約するために導入されました。

標準化

[13] preload scanner の動作やその存在自体も著者から直接に観察可能ではありませんから、 Web 関連の仕様書の要件としては記述されていません。

[15] 厳密には鯖側でアクセスの有無とタイミングを確認すれば、 著者から観測可能なこともあります。しかし preload scanner に限らずネットワークアクセスの有無やタイミング、厳密な順序関係などはネットワークの輻輳状態や OS のプロトコルスタックの実装と状態、その他様々な要因で変動しますから、 それによって相互運用性に影響が出るとは考えにくく、 標準化の対象にはなっていません。

[16] しかし preload scanner との整合性は新機能の導入時には常に考慮されています。

[17] とはいえあくまで preload scanner は実装のパフォーマンス向上戦略の1つに過ぎず、 構文解析器の必須の構成要素ではありません。すべての Webブラウザーpreload scanner を有しているわけではありませんし、その必要もありません。

関連

[18] rel=preload<video preload> とは直接関係ありません。

歴史

[12] preload scanner ははじめ WebKit (Blinkfork 前) に実装され、後に Gecko でも実装されました。

[1] [whatwg] <imgset> responsive imgs proposition (Re: The src-N proposal) ( ( 版)) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-November/041434.html

[2] [whatwg] <imgset> responsive imgs proposition (Re: The src-N proposal) ( ( 版)) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-November/041418.html

[3] [webkit-dev] Regarding the preload scanner in WebKit ( ( 版)) https://lists.webkit.org/pipermail/webkit-dev/2010-December/015501.html

[4] Surfin' Safari - Blog Archive » Optimizing Page Loading in the Web Browser ( ( 版)) https://www.webkit.org/blog/166/optimizing-page-loading-in-web-browser/

[5] Preconnect, prefetch, prerender... - Google スライド ( ( 版)) https://docs.google.com/presentation/d/18zlAdKAxnc51y_kj-6sWLmnjl6TLnaru_WH0LJTjP-o/present#slide=id.g120f70e9a_096

[6] The picture Element ( ( 版)) http://picture.responsiveimages.org/#preloader

[7] Bug 106198 – PreloadScanner preloads external CSS with non-matching media attribute ( ( 版)) https://bugs.webkit.org/show_bug.cgi?id=106198

[8] 「Google Chrome 27」がベータ版に - 窓の杜 ( (株式会社Impress Watch 著, 版)) http://www.forest.impress.co.jp/docs/news/20130408_594976.html

[9] The “ch” unit, the Threaded HTML parser and Chromium 27 « Peter Beverloo ( ( 版)) http://peter.sh/2013/02/the-ch-unit-the-threaded-html-parser-and-chromium-27/

[14] REFERRER: Clarify interaction with preload scanner · f95dd19 · w3c/webappsec ( ( 版)) https://github.com/w3c/webappsec/commit/f95dd19ccc780a184ebe2baab69bc6ecae97ed07

[19] Fastersite: The WebKit PreloadScanner ( ( 版)) http://gent.ilcore.com/2011/01/webkit-preloadscanner.html

[20] CSS Preload Scanner in WebKit ( ( 版)) http://ariya.ofilabs.com/2013/04/css-preload-scanner-in-webkit.html

[21] チェンジセット 61366 – WebKit ( ( 版)) http://trac.webkit.org/changeset/61366

[22] Bug 40802 – Add CSS scanning to HTML5PreloadScanner ( ( 版)) https://bugs.webkit.org/show_bug.cgi?id=40802

[23] Introducing NoState Prefetch  |  Web  |  Google Developers () https://developers.google.com/web/updates/2018/07/nostate-prefetch

[24] Allow authors to apply new css features (like cascade layers) while linking stylesheets · Issue #240 · whatwg/meta · GitHub, https://github.com/whatwg/meta/issues/240