/
695.txt
80 lines (56 loc) · 4.62 KB
/
695.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
* 仕様書
[REFS[
- [22] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-06-10 18:36:00 +09:00]]) <https://html.spec.whatwg.org/#link-type-dns-prefetch>
- [8] [CITE@en[Resource Hints]] ([TIME[2016-05-21 01:13:13 +09:00]]) <https://w3c.github.io/resource-hints/#h-dns-prefetch>
- [10] [CITE@en[Resource Hints]] ([TIME[2016-05-21 01:13:13 +09:00]]) <https://w3c.github.io/resource-hints/#h-fetching-the-resource-hint-link>
- [50] [CITE@en[Resource Hints]] ([TIME[2016-05-21 01:13:13 +09:00]]) <https://w3c.github.io/resource-hints/#h-security-and-privacy>
]REFS]
* リンク型 [CODE(HTML)@en[dns-prefetch]]
[25] [[リンク型]] [DFN[[CODE(HTML)@en[dns-prefetch]]]] は、
指定された[[資源]]の[[起源]]にある[[資源]]を[[利用者]]が必要とする可能性が高く、
予め当該[[起源]]の [[DNS]] [[名前解決]]をしておくことで[[利用者]]の体験を向上させられることを示します [SRC[>>22]]。
これは[[利用者エージェント]]が可能な限り早く行う[SHOULD[べき]]ものです [SRC[>>8]]。
[23] [[リンク型]] [CODE(HTML)@en[dns-prefetch]] は、 [CODE(HTMLe)@en[link]]
[[要素]]で指定でき、[[外部資源リンク]]を作成します [SRC[>>22]]。
[24] この[[リンク型]]は [[body-ok]] です [SRC[>>22]]。つまりこの[[リンク型]]の
[CODE(HTMLe)@en[link]] [[要素]]は、 [CODE(HTMLe)@en[head]] [[要素]]内のみならず、
[CODE(HTMLe)@en[body]] [[要素]]内でも使えます。
[11] [CODE(HTTP)@en[Link:]] [[ヘッダー]]でも指定できます [SRC[>>10]]。
[9] [CODE(HTMLa)@en[href][<link href>]] [[属性]]の [[URL]] に特に制約はありませんが、
[[userinfo]]、[[port][URL port]]、[[query][URL query]]、[[素片][素片識別子]]は指定しても意味が無い可能性が極めて高いです。
[[ネットワークスキーム]]以外の指定も意味が無さそうです。
[53] [[著者]]は、 [CODE(HTML)@en[dns-prefetch]] [CODE(HTMLe)@en[link]] [[要素]]よりも前に関係する
[[CSP]] [CODE(HTMLe)@en[meta]] [[要素]]を置く[SHOULD[べきです]] [SRC[>>50]]。
[54] [[著者]]は、 [CODE(HTML)@en[dns-prefetch]] [CODE(HTTP)@en[Link:]] [[ヘッダー]]を使うなら関係する
[[CSP]] [[ヘッダー]]も含める[SHOULD[べきです]] [SRC[>>50]]。
;; [55] >>53、>>54 に違反すると、処理順序の都合により、
[[CSP]] の制限が適用されないことになります。
* 処理
[49] [[混合内容]]に関して [[optionally blockable]] です [SRC[>>50]]。
これが[[混合内容]]制約に抵触する [[URL]] によって指定された
[[DNS]] [[名前解決]]を行わないべきなのかどうかは明確ではありません。
[51] [[CSP]] 制約が適用されるのかどうか、仕様書上は明確ではありませんが、
趣旨からすると適用されるべきとも考えられます。
;; [12] [[Referrer Policy]] は、[[参照元]]を送信することはないので、関係しません。
[52] 適用するかどうか、[[利用者]]が設定できるようにすることができます [SRC[>>50]]。
[33] [[利用者エージェント]]は、次の [[navigate]] があっても処理を継続する[SHOULD[べきです]] [SRC[>>10]]。[[利用者エージェント]]が必要ないと判断すれば中断できます [SRC[>>10]]。
* 歴史
[1] [CITE@en-us[Controlling DNS prefetching - MDC]] ([TIME[2009-07-12 21:30:31 +09:00]] 版) <https://developer.mozilla.org/En/Controlling_DNS_prefetching>
[2] [CITE@en[Controlling DNS prefetching - MDC Doc Center]]
( ([TIME[2011-04-02 16:10:25 +09:00]] 版))
<https://developer.mozilla.org/en/controlling_dns_prefetching#Controlling_prefetching_from_content>
[3] [CITE[IRC logs: freenode / #whatwg / 20110310]]
( ([TIME[2011-04-02 03:23:11 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110310#l-445>
[4] [CITE[DNS Prefetching - The Chromium Projects]]
([TIME[2015-03-21 10:14:33 +09:00]] 版)
<https://www.chromium.org/developers/design-documents/dns-prefetching>
[5] [CITE@ja[プリレンダリングとプリフェッチのサポート (Windows)]]
([TIME[2015-05-07 17:14:26 +09:00]] 版)
<https://msdn.microsoft.com/library/dn265039(v=vs.85).aspx>
[6] [CITE@en[Link relations: add dns-prefetch/preconnect/prerender; update prefetch]]
( ([[domenic]]著, [TIME[2016-04-28 07:26:36 +09:00]]))
<https://github.com/whatwg/html/commit/0f54b54307647ca15ace16ef03c570db1b918193>
[7] [CITE@en[Treat <link rel="next"> as a general resource hint]]
( ([[domenic]]著, [TIME[2016-05-19 16:38:13 +09:00]]))
<https://github.com/whatwg/html/commit/7ff5b096d423bf5750463957aed69680368ed99e>