prefetch

リンク型 prefetch (HTML)

仕様書

リンク型 prefetch

[25] リンク型 prefetch は、 指定された資源利用者が必要とする可能性が高く、 予めこれを fetch してキャッシュしておくのが有用である (fetch するべき >>17) と示します >>22

[23] リンク型 prefetch は、 link 要素で指定でき、外部資源リンクを作成します >>22

[26] Link: ヘッダーでも指定できます >>21

[24] このリンク型body-ok です >>22。つまりこのリンク型link 要素は、 head 要素内のみならず、 body 要素内でも使えます。

[53] 著者は、 prefetch link 要素よりも前に関係する CSP meta 要素を置くべきです >>50

[54] 著者は、 prefetch Link: ヘッダーを使うなら関係する CSP ヘッダーも含めるべきです >>50

[55] >>53>>54 に違反すると、処理順序の規定より、 CSP の制限が適用されないことになります。

[32] ページ分けされた次のページや、検索結果の高順位など、利用者の次の行動が予測できるときに投機的fetchを行わせることができます。 >>30

[34] navigate 先のページで埋め込まれる重要な資源が予めわかっている場合、 navigate 開始と同時に prefetch リンクを挿入して予め fetch を開始させることができます。 >>30

処理

[46] fetch は、obtain the resource によります >>21

[49] 混合内容に関して optionally blockable です >>50

[51] CSPReferrer Policy が適用されます >>50

[52] 適用するかどうか、利用者が設定できるようにすることができます >>50

[28] 現在の navigate の処理への干渉するべきではありません。 そのために fetch を遅延させて構いません。 >>21

[18] 利用者エージェントは、指定された資源前処理するべきではありません。 現在のページの文脈で自動的に実行・適用してはなりません>>17

[20] 前処理というのは、 prerender のような処理を指していると思われます。

[19] as, crossorigin が処理に反映されます。

[31] 利用者エージェントは、その判断により、投機的fetchを取り消しできます >>21

[33] 利用者エージェントは、次の navigate があっても投機的fetchを継続するべきです >>21

[29] obtain the resource により load/error イベント発火されることになっています。しかし投機的fetch の実行のタイミングは実装依存ですし、完全には処理されないかもしれません。 従ってできるだけ適切に発火するべきですが、 発火しなくても構いませんし、完全に処理せずとも発火することも認められています >>27

アドレスバー

[35] アドレスバーへの利用者の入力により先読みが行われる場合もあります。 アドレスバー参照。

歴史

[44] ユーザ設定をする - 超漢字ウェブサイト, , http://www.chokanji.com/ckv/manual/05-01-03.html

[45] 超漢字の標準WebブラウザーBBBリンクを 「リンク色」、 「訪れたリンク色」 で区別する :visited 他に 「切れたリンク色」 を区別できました。 「リンクチェック」 オプション (既定値: 無効) を有効にしておくと、 リンク切れを色で判別できました。 >>44

[47] これを実現するためには当然ながらレンダリング時点ですべてのハイパーリンクを開いていたと思われます。 (さすがに無理があるのでデフォルトで無効だったのでしょう。)

[1] Link Prefetching FAQ http://www.mozilla.org/projects/netlib/Link_Prefetching_FAQ.html

[2] Link prefetching FAQ - MDC ( 版) https://developer.mozilla.org/ja/Link_prefetching_FAQ

[3]

<link rel="prefetch alternate stylesheet" title="Designed for Mozilla" href="mozspecific.css">

>>2 より。これ他のブラウザでも動くの?

[4] FireFox先読み機能対策(X-Moz : prefetch) - Yaibeen (yaibeen 著, 版) http://nucleus.yaibeen.com/item245.html

FireFox 1.5系のブラウザで当サイト(Nucleus)へアクセスするとページを表示させる度にxml-rss2.phpへのアクセスが発生します。 原因はFireFoxの機能である『先読み』であることはわかりました。※FireFox 2.0.0.2では同現象は確認できませんでした。 サーバへの負荷が気になるのでxml-rss2.phpへ対策用のコードを加えて(&修正)みました。 Nucleus側で『先読み:X-Moz: Prefetch』であることを判別し、2回目以降の先読みはレスポンスとして『HTTP/1.0 304 Not Modified』を返却します。これで転送量削減と、サーバへの負荷軽減になると思います。

ちなみにFireFox 2.0.0.2ではライブブックマークの更新時は『X-Moz:livebookmarks』という値を送信しているようです。1.5.0.10では『livebookmarks』という値は確認できませんでした。livebookmarksで購読者数のチェック等に使えるかもしれませんね。

[5] 2002年12月の XHTML2 仕様案でリンク型の ISSUE として prefetch が検討対象として挙げられています。

[6] HTML5 Revision Tracker ( 版) http://html5.org/tools/web-apps-tracker?from=5247&to=5248

[7] [whatwg] Support of link rel=prefetch ( ( 版)) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-December/038481.html

[8] Web Developer's Guide to Prerendering in Chrome - Google Chrome — Google Developers ( ( 版)) https://developers.google.com/chrome/whitepapers/prerender?hl=ja

[9] XML Binding Language (XBL) 2.0 ( ( 版)) http://www.w3.org/TR/2007/CR-xbl-20070316/#the-prefetch

[10] Add manifest and prefetch contexts. https://www.w3.org/Bugs/Public/show_... · ca784a7 · whatwg/fetch ( ( 版)) https://github.com/whatwg/fetch/commit/ca784a76050352fbc4ceb61e39ae71475197398c

[11] プリレンダリングとプリフェッチのサポート (Windows) ( 版) https://msdn.microsoft.com/library/dn265039(v=vs.85).aspx

[12] Merge pull request #53 from w3c/prefetch-relationship · w3c/preload@ab0f23c ( 版) https://github.com/w3c/preload/commit/ab0f23ca8aadf5aef94de62f03b1e23ef7510b56

[13] 'prefetch' is erroniously listed as optionally-blockable. · w3c/webappsec-mixed-content@01cc333 ( 版) https://github.com/w3c/webappsec-mixed-content/commit/01cc3336c1e87ebc1bfd6d5f02e87042c07e279e

[14] Allow pingback/prefetch/stylesheet links in body · whatwg/html@179983e ( 版) https://github.com/whatwg/html/commit/179983e9eb99efe417349a40ebb664bd11668ddd

[15] Link relations: add dns-prefetch/preconnect/prerender; update prefetch ( (domenic著, )) https://github.com/whatwg/html/commit/0f54b54307647ca15ace16ef03c570db1b918193

[16] Treat <link rel="next"> as a general resource hint ( (domenic著, )) https://github.com/whatwg/html/commit/7ff5b096d423bf5750463957aed69680368ed99e

[36] Introduce 'prefetch-src'. (#283) (mikewest著, ) https://github.com/w3c/webappsec-csp/commit/91adc4ab7beb21bcc05e3ebeeb035d2745c7817d

[37] Specify behavior of prefetch requests · Issue #107 · w3c/webappsec-csp () https://github.com/w3c/webappsec-csp/issues/107

[38] Introduce 'prefetch-src'. Closes w3c/webappsec-csp#107. by mikewest · Pull Request #283 · w3c/webappsec-csp () https://github.com/w3c/webappsec-csp/pull/283

[39] Add prefetch and prerender initiators (yoavweiss著, ) https://github.com/whatwg/fetch/commit/d5d084096392f2c47841308952a76751bafdd375

[40] Add a `prefetch` initiator by yoavweiss · Pull Request #659 · whatwg/fetch () https://github.com/whatwg/fetch/pull/659

[41] Introduce 'prefetch-src'. Closes w3c/webappsec-csp#107. by mikewest · Pull Request #283 · w3c/webappsec-csp () https://github.com/w3c/webappsec-csp/pull/283

[42] Request.destination for `<link rel=prefetch>` · Issue #658 · whatwg/fetch () https://github.com/whatwg/fetch/issues/658

[43] 【注意】ブラウザの先読み機能による大量アクセスについて - 電子ジャーナル・電子ブックを使う - Keio University LibGuides at Keio University Media Center / 慶應義塾大学メディアセンター () https://libguides.lib.keio.ac.jp/e-resource/link-prefetching

最近、Webブラウザの「リンク先読み機能」により、利用者が意図せずとも、大量ダウンロード/大量アクセスを起こしてしまうケースが頻発しています。

「リンク先読み機能」では、ページを閲覧中に、バックグラウンドでページ内のリンクへのアクセスが繰り返されます。そのため、本人は普通に電子ジャーナルを利用していたつもりでも、気が付かないうちに大量ダウンロード/大量アクセスになってしまうことがあります。

以下の設定変更により、この機能を無効にしていただきますよう、ご協力をお願いいたします。

特にMicrosoft Edgeでの発生事例が多く報告されていますので、ご注意ください。