Experimental: ããã¯å®é¨çãªæ©è½ã§ãã
æ¬çªã§ä½¿ç¨ããåã«ãã©ã¦ã¶ã¼äºææ§ä¸è¦§è¡¨ããã§ãã¯ãã¦ãã ããã
ææ©ã«ã¼ã« API (Speculation Rules API) ã¯ãå°æ¥ã®ããã²ã¼ã·ã§ã³ã®ããã©ã¼ãã³ã¹ãåä¸ãããããã«è¨è¨ããã¦ãã¾ããããã¯ç¹å®ã®ãªã½ã¼ã¹ãã¡ã¤ã«ã§ã¯ãªãææ¸ URL ã対象ã¨ããã®ã§ããã«ããã¼ã¸ã¢ããªã±ã¼ã·ã§ã³ (MPA) ã§æå³ãããã¾ãããåä¸ã®ãã¼ã¸ã¢ããªã±ã¼ã·ã§ã³ (SPA) ã§ã¯æå³ãããã¾ããã
ææ©ã«ã¼ã« API ã¯ãåºãå©ç¨ã§ãã <link rel="prefetch">
æ©è½ã®ä»£æ¿ã¨ãªããã®ã§ã Chrome ã®ã¿ã®éæ¨å¥¨ã§ãã <link rel="prerender">
æ©è½ãç½®ãæããããã«ãè¨è¨ããã¦ãã¾ããå
èªã¿ãããææ¸ãäºåã¬ã³ããªã³ã°ãããææ¸ãæå®ããããã®ããã表ç¾åãããæ§æããããæ§æã¨ã¨ãã«ããããã®æè¡ã«å¯¾ãã¦å¤ãã®æ¹åç¹ãæä¾ãã¾ãã
ã¡ã¢: ææ©ã«ã¼ã« API ã¯ãµããªã½ã¼ã¹ã®å
èªã¿ãå¦çãã¾ããããã®ããã«ã¯ <link rel="prefetch">
ã使ç¨ããå¿
è¦ãããã¾ãã
ææ©ã«ã¼ã«ã¯ãã¤ã³ã©ã¤ã³ã® <script type="speculationrules">
è¦ç´ ã®ä¸ã¨ã Speculation-Rules
ã¬ã¹ãã³ã¹ãããã¼ã§åç
§ãããå¤é¨ããã¹ããã¡ã¤ã«ã§æå®ãããã¨ãã§ãã¾ããã«ã¼ã«ã¯ JSON æ§é ã§æå®ãã¾ãã
ã¹ã¯ãªããã®ä¾ã示ãã¾ãã
<script type="speculationrules">
{
"prerender": [
{
"where": {
"and": [
{ "href_matches": "/*" },
{ "not": { "href_matches": "/logout" } },
{ "not": { "href_matches": "/*\\?*(^|&)add-to-cart=*" } },
{ "not": { "selector_matches": ".no-prerender" } },
{ "not": { "selector_matches": "[rel~=nofollow]" } }
]
}
}
],
"prefetch": [
{
"urls": ["next.html", "next2.html"],
"requires": ["anonymous-client-ip-when-cross-origin"],
"referrer_policy": "no-referrer"
}
]
}
</script>
<script>
è¦ç´ ã使ç¨ããææ©ã«ã¼ã«ã¯ããµã¤ãã«ããã¦ããå ´åã Content-Security-Policy
ã® script-src
ãã£ã¬ã¯ãã£ãã§æç¤ºçã«è¨±å¯ããå¿
è¦ãããã¾ããããã¯ã 'inline-speculation-rules'
ã®ã½ã¼ã¹ãããã·ã¥ã½ã¼ã¹ããã³ã¹ã½ã¼ã¹ã®ããããã追å ãããã¨ã§è¡ãã¾ãã
HTTP ãããã¼ã®ä¾ã示ãã¾ãã
Speculation-Rules: "/rules/prefetch.json"
ææ©ã«ã¼ã« JSON ãå«ãããã¹ããªã½ã¼ã¹ã¯ãä»»æã®æå¹ãªååã¨æ¡å¼µåãæã¤ãã¨ãã§ãã¾ãããMIME ã¿ã¤ã application/speculationrules+json
ã§æä¾ããå¿
è¦ãããã¾ãã
ã¡ã¢: ã«ã¼ã«ã¯ãã¤ã³ã©ã¤ã³ã¹ã¯ãªãã㨠HTTP ãããã¼ã®ä¸¡æ¹ãåæã«ä½¿ç¨ãã¦æå®ãããã¨ãã§ãã¾ããææ¸ã«é©ç¨ããããã¹ã¦ã®ã«ã¼ã«ãè§£æããããã®ææ¸ã®ææ©ã«ã¼ã«ãªã¹ãã«è¿½å ããã¾ãã
ææ©çèªã¿è¾¼ã¿ã®ç¨®é¡ï¼"prerender"
ã "prefetch"
ãªã©ï¼ãã¨ã«ãã«ã¼ã«ãæ ¼ç´ããé
åãæå®ãã¾ããåã«ã¼ã«ã¯ãªãã¸ã§ã¯ãã«æ ¼ç´ããã¦ãããä¾ãã°åå¾ãããªã½ã¼ã¹ã®ãªã¹ãã¨ãåã«ã¼ã«ã«å¯¾ããæç¤ºç㪠Referrer-Policy
è¨å®ãªã©ã®ãªãã·ã§ã³ãæå®ãã¾ããäºåã¬ã³ããªã³ã°ããã URL ãå
èªã¿ããããã¨ã«æ³¨æãã¾ãããã
å©ç¨å¯è½ãªæ§æã®å
¨è¬çãªèª¬æã¯ã <script type="speculationrules">
ãåç
§ãã¦ãã ããã
prefetch
ã«ã¼ã«ã <script type="speculationrules">
è¦ç´ ã¾ã㯠Speculation-Rules
ã®ä¸ã«å«ããã¨ã対å¿ãã¦ãããã©ã¦ã¶ã¼ã¯åç
§ãããã¼ã¸ã®ã¬ã¹ãã³ã¹æ¬ä½ã¯ãã¦ã³ãã¼ããã¾ããããã¼ã¸ãåç
§ãã¦ãããµããªã½ã¼ã¹ã¯ãã¦ã³ãã¼ããã¾ãããå
èªã¿ããããã¼ã¸ã«ç§»åããå ´åãå
èªã¿ãããªãã£ãå ´åãããã¯ããã«ãã°ããã¬ã³ããªã³ã°ããã¾ãã
çµæã¯ææ¸ãã¨ã«ã¡ã¢ãªã¼å ã®ãã£ãã·ã¥ã«ä¿åããã¾ããå èªã¿ããã£ãã·ã¥ããããã®ã¯ãç¾å¨ã®ãã¼ã¸ããç§»åããæç¹ã§ãç§»åå ã®å èªã¿ææ¸ãé¤ãã¦ç ´æ£ããã¾ãã
ããã¯ãã¦ã¼ã¶ã¼ãç§»åããªããã®ãå èªã¿ãããå ´åããããã¼ã許å¯ãã¦ããã° HTTP ãã£ãã·ã¥ã«çµæãå ¥ãããããã¾ããããä¸è¬çã«ã¯ãªã½ã¼ã¹ã®ç¡é§ã«ãªããã¨ãæå³ãã¦ãã¾ããã¨ã¯ãããå èªã¿ã®ã³ã¹ãã¯äºåã¬ã³ããªã³ã°ã®ã³ã¹ãããããã£ã¨å°ããã®ã§ãå èªã¿ãåºãå°å ¥ãããã¨ãæ¨å¥¨ããã¾ããä¾ãã°ããµã¤ãä¸ã®éè¦ãªãã¼ã¸ããã¹ã¦å èªã¿ãããã¨ãæ¨å¥¨ããã¾ãï¼è©³ããã¯ãå®å ¨ã§ãªãææ©çè² è·æ¡ä»¶ãåç §ãã¦ãã ããï¼ã
åä¸ãµã¤ãããã³ãµã¤ãéã®å èªã¿ã¯åä½ãã¾ããããµã¤ãéã®å èªã¿ã¯å¶éããã¾ãï¼ä¸¡è ã®éãã®èª¬æã¯ "same-site "㨠"cross-site" ãåç §ãã¦ãã ããï¼ããã©ã¤ãã·ã¼ã®çç±ããããµã¤ãéã§ã®å èªã¿ã¯ãç¾å¨ã®ã¨ãããã¦ã¼ã¶ã¼ãåºåå ã®ãµã¤ãã«ã¯ããã¼ãè¨å®ããªãå ´åã«ã®ã¿åä½ãã¾ãããµã¤ããååè¨å®ãããã¯ããã¼ã«åºã¥ãã¦ãå èªã¿ããããã¼ã¸ï¼å®éã«ã¯ä¸åº¦ã訪åãã¦ããªãããããã¾ããï¼ãéãã¦ã¦ã¼ã¶ã¼ã®æ´»åã追跡ã§ããããã«ãªããã¨ã¯æã¾ããããã¾ããã
ã¡ã¢: å°æ¥çã«ã¯ Supports-Loading-Mode
ãããã¼ã§ãµã¤ããã¾ããå
èªã¿ã®ãªããã¤ã³ãæä¾ãããäºå®ã§ãããå·çæç¹ã§ã¯å®è£
ããã¦ãã¾ããï¼ãªãªã¸ã³ãã¾ãããåä¸ãµã¤ãã®äºåã¬ã³ããªã³ã°ã®ãªããã¤ã³ã®ã¿ãå©ç¨ã§ãã¾ããï¼ã
ææ©ã«ã¼ã«ã®å
èªã¿ã«å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã§ã¯ãå¤ãå
èªã¿æ©æ§ãããªãã¡ <link rel="prefetch">
ã fetch()
ã« priority: "low"
ãªãã·ã§ã³ãè¨å®ãã¾ãããªããªããææ©ã«ã¼ã«ã®å
èªã¿ã¯ããã²ã¼ã·ã§ã³ã®ããã®ãã®ã§ãããä¸è¬çãªãªã½ã¼ã¹ã®å
èªã¿ã§ã¯ãªãããã§ãã
<link rel="prefetch">
ã¯ä½¿ç¨ã§ãã¾ãããCache-Control
ãããã¼ã§ãããã¯ããã¾ããã <link rel="prefetch">
ã¯ãããã¯ããããã¨ãããããã¾ããããã«ãææ©ã«ã¼ã«ã®å èªã¿ã«ã¯æ¬¡ã®ãããªç¹å¾´ãããã¾ãã
fetch()
ã¯ããã§ã¯ããã¾ããï¼ãprerender
ã«ã¼ã«ã <script type="speculationrules">
è¦ç´ ã¾ã㯠Speculation-Rules
ãããã¼ã«å
¥ããã¨ã対å¿ãã¦ãããã©ã¦ã¶ã¼ã¯ã³ã³ãã³ããåå¾ããã¬ã³ããªã³ã°ããé表示ã®ã¿ãã«èªã¿è¾¼ãã§ææ¸ãã¨ã®ã¡ã¢ãªã¼å
ãã£ãã·ã¥ã«æ ¼ç´ãã¾ããããã«ã¯ããã¹ã¦ã®ãµããªã½ã¼ã¹ã®èªã¿è¾¼ã¿ããã¹ã¦ã® JavaScript ã®å®è¡ãããã«ã¯ JavaScript ã«ãã£ã¦éå§ããããµããªã½ã¼ã¹ã®èªã¿è¾¼ã¿ã¨ãã¼ã¿åå¾ã®å®è¡ãå«ã¾ãã¾ãããã£ãã·ã¥ãããäºåã¬ã³ããªã³ã°ã¨ãã®ãµããªã½ã¼ã¹ã¯ãç¾å¨ã®ãã¼ã¸ããé¢ããã¨ç ´æ£ããã¾ãããã¡ãããç§»åå
ãäºåã¬ã³ããªã³ã°ãããããã¥ã¡ã³ãã§ããå ´åãé¤ãã¾ãã
äºåã¬ã³ããªã³ã°ããããã¼ã¸ã¸ã®ä»å¾ã®ããã²ã¼ã·ã§ã³ã¯ãã»ã¼ç¬æã«è¡ããã¾ãããã©ã¦ã¶ã¼ã¯é常ã®ããã²ã¼ã·ã§ã³ããã»ã¹ãå®è¡ãã代ããã«é表示ã®ã¿ããã¢ã¯ãã£ãã«ããæ¢åã®è¡¨ç¤ºãã¼ã¸ãäºåã¬ã³ããªã³ã°ããããã¼ã¸ã«ç½®ãæãã¾ãããã¼ã¸ãå®å ¨ã«äºåã¬ã³ããªã³ã°ãããåã«ã¢ã¯ãã£ãåãããå ´åããã®ãã¼ã¸ã¯ç¾å¨ã®ç¶æ ã§ã¢ã¯ãã£ãåãããå¼ãç¶ãèªã¿è¾¼ã¿ãè¡ããã¾ãã
äºåã¬ã³ããªã³ã°ã¯ãã¡ã¢ãªã¨ãããã¯ã¼ã¯å¸¯åå¹ ã使ç¨ãã¾ããäºåã¬ã³ããªã³ã°ãããã³ã³ãã³ãã«ã¦ã¼ã¶ã¼ãç§»åããªãå ´åããããã¯ç¡é§ã«ãªãã¾ãï¼ãã ãããããã¼ã許å¯ãã¦ããã°çµæã¯ HTTP ãã£ãã·ã¥ã«ä¿åãããå¾ã§ä½¿ç¨ãããã¨ãã§ããããããã¾ããï¼ãäºåã¬ã³ããªã³ã°ã®å è¡ã³ã¹ãã¯ãå èªã¿ããããã£ã¨å¤§ãããªãã¾ããã¾ãããã®ä»ã®æ¡ä»¶ã«ãããã³ã³ãã³ããäºåã¬ã³ããªã³ã°ããã®ãå®å ¨ã§ãªããªããã¨ãããã¾ãï¼è©³ããã¯ãå®å ¨ã§ãªãææ©çèªã¿è¾¼ã¿æ¡ä»¶ãåç §ãã¦ãã ããï¼ããã®ããäºåã¬ã³ããªã³ã°ã¯ãã¦ã¼ã¶ã¼ããã®ãã¼ã¸ã«ç§»åããå¯è½æ§ãé«ããã¦ã¼ã¶ã¼ã®ä½æçãªå©ç¹ãä½åãªã³ã¹ãã«è¦åãã¨èãããããããªã±ã¼ã¹ãæ éã«èæ ®ããæ§ããã«æ¡ç¨ãããã¨ãæ¨å¥¨ããã¾ãã
ã¡ã¢: æ½å¨çãªãªã½ã¼ã¹ã®æµªè²»ãèæ
®ããã¨ãäºåã¬ã³ããªã³ã°ãããå ´åã <iframe>
ãã¬ã³ããªã³ã°ããã®ã¨ã»ã¼åãéã®ãªã½ã¼ã¹ã使ç¨ãã¾ãã
ã¡ã¢: å¤ãã® API ã¯ãäºåã¬ã³ããªã³ã°æãããã¯æå¹åãããã¾ã§ãèªåçã«å»¶æããã¾ãã詳ããã¯äºåã¬ã³ããªã³ã°ä¸ã«å»¶æã¾ãã¯å¶éããããã©ãããã©ã¼ã æ©è½ãåç §ãã¦ãã ããã
äºåã¬ã³ããªã³ã°ãããææ¸ã¯ãæ¢å®ã§ã¯åä¸ãªãªã¸ã³ã®ææ¸ã«å¶éããã¦ãã¾ããç°ãªããªãªã¸ã³ã§ãã£ã¦ããåããµã¤ãã®äºåã¬ã³ããªã³ã°ã¯å¯è½ã§ãããã®ããã«ã¯ã Supports-Loading-Mode
ãããã¼ã« credentialed-prerender
ã¨ããå¤ãæå®ãã¦ãããã²ã¼ã·ã§ã³ã¿ã¼ã²ããããªããã¤ã³ããå¿
è¦ãããã¾ããç¾æç¹ã§ã¯ãç°ãªããµã¤ãã®äºåã¬ã³ããªã³ã°ã¯ã§ãã¾ããã
対å¿ãã¦ãããã©ã¦ã¶ã¼ã§ã¯ãææ©ã«ã¼ã«ã®äºåã¬ã³ããªã³ã°ã¯å¤ãäºåã¬ã³ããªã³ã°ã®ä»çµã¿ããããã <link rel="prerender">
ãããåªå
ãããã¹ãã§ãã
<link rel="prerender">
㯠Chrome ç¬èªã®ãã®ã§ãããæ¨æºåããããã¨ã¯ãªãã Chrome ã®éçºãã¼ã ã¯ç¾å¨ãããã廿¢ãã使¥ãè¡ã£ã¦ãã¾ãã<link rel="prerender">
ã¯èªã¿è¾¼ã¿ã¾ãããCache-Control
ã®è¨å®ã«ãã£ã¦ãããã¯ããããã¨ã¯ããã¾ãããã <link rel="prerender">
ã¯ãããã¯ããããã¨ãããããã¾ãã<link rel="prerender">
ã¨ã¯ç°ãªããããã¯æ¨æ¸¬çãªãã³ãã§ããããã©ã¦ã¶ã¼ã¯ã¦ã¼ã¶ã¼è¨å®ãç¾å¨ã®ã¡ã¢ãªã¼ä½¿ç¨éããã®ä»ã®çµé¨åã«åºã¥ãã¦ãã³ãã«å¾ããªããã¨ã鏿ããããããã¾ãããææ©ã«ã¼ã« API ã«å¯¾å¿ãã¦ãããã©ããã¯ã以ä¸ã®ã³ã¼ãã§ç¢ºèªã§ãã¾ãã
if (
HTMLScriptElement.supports &&
HTMLScriptElement.supports("speculationrules")
) {
console.log("ã使ãã®ãã©ã¦ã¶ã¼ã¯ææ©ã«ã¼ã« API ã«å¯¾å¿ãã¦ãã¾ãã");
}
ä¾ãã°ã対å¿ãã¦ãããã©ã¦ã¶ã¼ã§ã¯å
èªã¿ã®ããã®ææ©ã«ã¼ã«ãæ¿å
¥ãããããä»ã®ãã©ã¦ã¶ã¼ã§ã¯ <link rel="prefetch">
ã®ãããªå¤ãæè¡ã使ãããå ´åã¯æ¬¡ã®ããã«ãã¾ãã
if (
HTMLScriptElement.supports &&
HTMLScriptElement.supports("speculationrules")
) {
const specScript = document.createElement("script");
specScript.type = "speculationrules";
const specRules = {
prefetch: [
{
source: "list",
urls: ["/next.html"],
},
],
};
specScript.textContent = JSON.stringify(specRules);
document.body.append(specScript);
} else {
const linkElem = document.createElement("link");
linkElem.rel = "prefetch";
linkElem.href = "/next.html";
document.head.append(linkElem);
}
å
èªã¿ããã³äºåã¬ã³ããªã³ã°ããããã¼ã¸ã®æ¤åº
ãã®ç¯ã§ã¯ããªã¯ã¨ã¹ãããããã¼ã¸ãå èªã¿ã¾ãã¯äºåã¬ã³ããªã³ã°ããããã©ãããæ¤åºãããã¾ãã¾ãªæ¹æ³ãè¦ã¦ããã¾ãã
ãµã¼ãã¼å´ã§ã®æ¤åºå
èªã¿ã¾ãã¯äºåã¬ã³ããªã³ã°ã®ãã¼ã¸ãªã¯ã¨ã¹ãã¯ã Sec-Purpose
ãªã¯ã¨ã¹ããããã¼ãä»ãã¾ãã
å èªã¿ã®å ´å:
äºåã¬ã³ããªã³ã°ã®å ´å:
Sec-Purpose: prefetch;prerender
ãµã¼ãã¼ã¯ããã®ãããã¼ã«åºã¥ãã¦å¿çããä¾ãã°ãææ©çãªèªã¿è¾¼ã¿ãªã¯ã¨ã¹ãããã°ã«è¨é²ããããç°ãªãã³ã³ãã³ããè¿ããããææ©çãªèªã¿è¾¼ã¿èªä½ã鲿¢ããããããã¨ãã§ãã¾ããæåã§ã¯ãªãã¬ã¹ãã³ã¹ã³ã¼ãï¼ãªãã¤ã¬ã¯ãå¾ã® 200~299 以å¤ã® HTTP ã¹ãã¼ã¿ã¹ï¼ãè¿ãããå ´åããã¼ã¸ã¯å èªã¿/äºåã¬ã³ããªã³ã°ããã¾ãããããã«ã204 ããã³ 205 ã®ã¹ãã¼ã¿ã¹ã³ã¼ããäºåã¬ã³ããªã³ã°ãç¦æ¢ãã¾ã ï¼ãã ããå èªã¿ã¯ç¦æ¢ãã¾ããï¼ã
ãµã¼ãã¼å´ã§ææ©çãªèªã¿è¾¼ã¿ãç¦æ¢ããæãç°¡åãªæ¹æ³ã¯ã失æã³ã¼ãï¼ä¾ãã° 503ï¼ã使ç¨ãããã¨ã§ãããã ããé常ã¯ãå èªã¿/äºåã¬ã³ããªã³ã°ã許å¯ãããã¼ã¸ãå®éã«è¡¨ç¤ºãããã¨ãã«ã®ã¿å®è¡ãã¹ãã¢ã¯ã·ã§ã³ã¯ã JavaScript ã使ç¨ãã¦é å»¶ãããæ¹ãè¯ãææ³ã§ãã
JavaScript ã«ããå èªã¿ã®æ¤åºãã¼ã¸ãå
èªã¿ãããã¨ããã® PerformanceResourceTiming.deliveryType
é
ç®ã¯ "navigational-prefetch"
ã¨ããå¤ãè¿ãã¾ãã以ä¸ã¯ "navigational-prefetch"
åã®ããã©ã¼ãã³ã¹é
ç®ãåãåã£ãã¨ãã«é¢æ°ãå®è¡ããããã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
if (
performance.getEntriesByType("navigation")[0].deliveryType ===
"navigational-prefetch"
) {
respondToPrefetch(); // ä½è
å®ç¾©ã®é¢æ°
}
ãã®ãã¯ããã¯ã¯ãããã©ã¼ãã³ã¹ã測å®ããã¨ããã å èªã¿ä¸ã«çºçããã¨åé¡ãå¼ãèµ·ããå¯è½æ§ã®ããã¢ã¯ã·ã§ã³ã å»¶æãããã¨ãã«æçã§ãï¼å®å ¨ã§ãªãå èªã¿ ãåç §ãã¦ãã ããï¼ã
JavaScript ã«ããäºåã¬ã³ããªã³ã°ã®æ¤åºãã¼ã¸ãäºåã¬ã³ããªã³ã°ããã¦ããéã«ã¢ã¯ãã£ããã£ãå®è¡ããã«ã¯ã Document.prerendering
ããããã£ã調ã¹ãã¨ããã§ããããä¾ãã°ãåæã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
if (document.prerendering) {
analytics.sendInfo("äºåã¬ã³ããªã³ã°ã§ããã¾ã§åå¾ãã¾ããã");
}
äºåã¬ã³ããªã³ã°ãããææ¸ãã¢ã¯ãã£ãã«ãªãã¨ã PerformanceNavigationTiming.activationStart
ã«ã¯ãäºåã¬ã³ããªã³ã°ãå§ãã¦ããå®éã«ææ¸ãã¢ã¯ãã£ãã«ãªãã¾ã§ã®æéã表ã DOMHighResTimeStamp
ãè¨å®ããã¾ãã以ä¸ã®é¢æ°ã¯ããã¼ã¸ãäºåã¬ã³ããªã³ã°ä¸ã¾ãã¯äºåã¬ã³ããªã³ã°æ¸ã¿ã§ãããã¨ã調ã¹ããã¨ãã§ãã¾ãã
function pagePrerendered() {
return (
document.prerendering ||
self.performance?.getEntriesByType?.("navigation")[0]?.activationStart > 0
);
}
äºåã¬ã³ããªã³ã°ããããã¼ã¸ããã¼ã¸ãé²è¦§ãã¦ããã¦ã¼ã¶ã¼ã«ãã£ã¦ã¢ã¯ãã£ãã«ãããã¨ãprerenderingchange
ã¤ãã³ããçºçãã¾ããããã¯ã以åã¯ãã¼ã¸èªã¿è¾¼ã¿æã«æ¢å®ã§éå§ããã¦ããã¢ã¯ãã£ããã£ãããã¼ã¸ãã¦ã¼ã¶ã¼ã«ãã£ã¦è¡¨ç¤ºãããã¾ã§é
ããããå ´åã«ä½¿ç¨ãããã¨ãã§ãã¾ãã以ä¸ã®ã³ã¼ãã¯ãäºåã¬ã³ããªã³ã°ããããã¼ã¸ã§ãäºåã¬ã³ããªã³ã°ãå®äºããã颿°ãå®è¡ãããã¾ãã¯äºåã¬ã³ããªã³ã°ããã¦ããªããã¼ã¸ã§ããã«é¢æ°ãå®è¡ããã¤ãã³ããªã¹ãã¼ãè¨å®ãã¾ãã
if (document.prerendering) {
document.addEventListener("prerenderingchange", initAnalytics, {
once: true,
});
} else {
initAnalytics();
}
å®å
¨ã§ãªãææ©çèªã¿è¾¼ã¿æ¡ä»¶
ãã®ç¯ã§ã¯ãå èªã¿ã¨äºåã¬ã³ããªã³ã°ã å®å ¨ã§ãªã æ¡ä»¶ã«æ³¨ç®ãã¦ããã¾ããããã¯ããããã®æ¡ä»¶ã示ããã¼ã¸ã®å èªã¿/äºåã¬ã³ããªã³ã°ã¯ãã³ã¼ãã®ç·©åãè¦æ±ãããããå®å ¨ã«é¿ããå¿ è¦ããããã¨ãæå³ãã¦ãã¾ãã
å®å ¨ã§ãªãå èªã¿åè¿°ããããã«ãå èªã¿ãããã¨ã«ãããªã¹ã¯ã¨ãªã¿ã¼ã³ã®æ¯çã¯ããªãä½ãããªã½ã¼ã¹ã®æµªè²»ã®å¯è½æ§ã¯æå°ã§ãããæ§è½ã®åä¸ã大ãããããç§ãã¡ã¯å èªã¿ãåºãæ¡ç¨ãããã¨ãæ¨å¥¨ãã¾ããããããå èªã¿ããããã¼ã¸ãã¢ããªã±ã¼ã·ã§ã³ã®ããã¼ã«åé¡ãçºçãããªãããã«ããå¿ è¦ãããã¾ãã
å èªã¿ãè¡ãããã¨ããã©ã¦ã¶ã¼ã¯åç §ãããã¼ã¸ã®ã¬ã¹ãã³ã¹æ¬ä½ãåä¸ã® GET ãªã¯ã¨ã¹ãã§ãã¦ã³ãã¼ããã¾ããç¹ã«åé¡ãçºçããããã®ã¯ããªã¯ã¨ã¹ãã® URL ãããã® URL ã«ç§»åããã¾ã§ã¯èµ·ãã£ã¦ã»ãããªãããµã¼ãã¼ä¸»å°ã®å¯ä½ç¨ãå¼ãèµ·ããå ´åã§ãã
ä¾ãã°æ¬¡ã®ãããªãã®ã§ãã
ãã®ãããªåé¡ã¯ããªã¯ã¨ã¹ããæ¥ãã¨ãã« Sec-Purpose: prefetch
ãããã¼ãç£è¦ããåé¡ã®ããæ©è½ãå»¶æããåºæã®ã³ã¼ããå®è¡ãããã¨ã§ããµã¼ãã¼ä¸ã§è»½æ¸ãããã¨ãã§ãã¾ãããã®å¾ããã¼ã¸ãå®éã«ç§»åãããã¨ãã«ãå¿
è¦ã§ããã° JavaScript ã§å»¶æãããæ©è½ãèµ·åãããã¨ãã§ãã¾ãã
ã¡ã¢: æ¤åºã³ã¼ãã®è©³ç´°ã¯ãå èªã¿ããã³äºåã¬ã³ããªã³ã°ããããã¼ã¸ã®æ¤åºã®ç¯ã«ããã¾ãã
ã¾ãããµã¼ãã¼ãã¬ã³ããªã³ã°ããææ¸ããã¦ã¼ã¶ã¼ãç¾å¨ã®ãã¼ã¸ã§åãå¾ãæä½ã«ãã£ã¦ã³ã³ãã³ããå¤åãããããªææ¸ãå èªã¿ãããã¨ã¯ãæ½å¨çã«å±éºã§ããä¾ãã°ããã©ãã·ã¥ã»ã¼ã«ã®ãã¼ã¸ãæ ç»é¤¨ã®åº§å¸å°å³ãªã©ã§ãããã®ãããªã±ã¼ã¹ãæ³¨ææ·±ããã¹ããããã¼ã¸ãèªã¿è¾¼ã¾ãããã³ã³ãã³ããæ´æ°ãããã¨ã§ããã®ãããªèª²é¡ã軽æ¸ãã¦ãã ããããããã®ã±ã¼ã¹ã®è©³ç´°ã«ã¤ãã¦ã¯ãç¶æ ã®å¤åããµã¼ãã¼å´ã§ã¬ã³ããªã³ã°ããå ´åãåç §ãã¦ãã ããã
ã¡ã¢: ãã©ã¦ã¶ã¼ã¯å èªã¿ããããã¼ã¸ãç ´æ£ããåã«çæéãã£ãã·ã¥ãã¾ãï¼ä¾ãã° Chrome 㯠5 åéãã£ãã·ã¥ãã¾ãï¼ã®ã§ãã©ã®ãããªå ´åã§ãã¦ã¼ã¶ã¼ã¯æå¤§ 5 ååã®ã³ã³ãã³ããè¦ããã¨ã«ãªãã¾ãã
JavaScript ã¯ã¢ã¯ãã£ãã«ãªãã¾ã§å®è¡ãããªãããããã¼ã¸ãåå¾ãããã¨ã«ããå¯ä½ç¨ããã¹ã¦ JavaScript ã®å®è¡ã«ãããã®ã§ããå ´åãå èªã¿ã¯å®å ¨ã§ãã
æå¾ã®ãã³ãã¯ã robots.txt ãã¡ã¤ã«ã«è¨±å¯ããã¦ããªãã¨ãã¦æ²è¼ããã¦ãã URL ãç£æ»ãããã¨ã§ããé常ããã® URL ã¯èªè¨¼ãããã¦ã¼ã¶ã¼ã®ã¿ãã¢ã¯ã»ã¹ã§ãããã¼ã¸ãæãã¦ãããããæ¤ç´¢ã¨ã³ã¸ã³ã®æ¤ç´¢çµæã«å«ãããã¨ãã§ãã¾ããããããã®å¤ãã¯åé¡ãªãã§ãããããå èªã¿ãããã®ã«å®å ¨ã§ãªãï¼ã¤ã¾ãè¨è¿°ããã¦ããæ¡ä»¶ã示ãã¦ããï¼ URL ãæ¢ãã®ã«è¯ãå ´æã¨ãªãã¾ãã
å®å ¨ã§ãªãäºåã¬ã³ããªã³ã°äºåã¬ã³ããªã³ã°ã¯ãå èªã¿ãããå°å ¥ãªã¹ã¯ãé«ãããããããè¡ã価å¤ãããå ´åã«ã®ã¿ãæ§ããã«è¡ãã¹ãã§ããäºåã¬ã³ããªã³ã°ã«ã¯ã注æãã¹ãå®å ¨ã§ãªãæ¡ä»¶ãããå¤ãããã¾ãããããã£ã¦ãè¦è¿ãã¯å¤§ãããªãã¾ããããªã¹ã¯ã大ãããªãã¾ãã
äºåã¬ã³ããªã³ã°ãè¡ãããã¨ããã©ã¦ã¶ã¼ã¯ URL ãåå¾ããã³ã³ãã³ããã¬ã³ããªã³ã°ãã¦é表示ã®ã¿ãã«èªã¿è¾¼ã¿ã¾ããããã¯ãã³ã³ãã³ãã® JavaScript ãå®è¡ããJavaScript ã§åå¾ãããã®ãå«ããã¹ã¦ã®ãµããªã½ã¼ã¹ãèªã¿è¾¼ã¿ã¾ãã以ä¸ã®ããããã®æ¡ä»¶ãè¦ãããå ´åããã®ã³ã³ãã³ãã¯äºåã¬ã³ããªã³ã°ãå®å ¨ã§ãªãå¯è½æ§ãããã¾ãã
ãã®ãããªåé¡ã軽æ¸ããã«ã¯ã以ä¸ã®æè¡ã使ç¨ãããã¨ãã§ãã¾ãã
Sec-Purpose: prefetch
ãããã¼ãç£è¦ããåé¡ãèµ·ããæ©è½ãå»¶æããããã®åºæã®ã³ã¼ããå®è¡ãã¾ããprerenderingchange
ã¤ãã³ãã使ç¨ãã¦ãäºåã¬ã³ããªã³ã°ããããã¼ã¸ãå®éã«ã¢ã¯ãã£ãã«ãªã£ãã¿ã¤ãã³ã°ãæ¤åºãããã®çµæã¨ãã¦ã³ã¼ããå®è¡ãã¾ãããã㯠2 ã¤ã®ç¨éã§æçã§ãã
fetch()
ã WebSocket
ã®ãããªå¥ã®ã¡ã«ããºã ã使ç¨ãã¦ããªã¢ã«ã¿ã¤ã ã§æ´æ°ãããã¨ãã§ãã¾ããããã«ãããäºåã¬ã³ããªã³ã°ãããã¢ã¯ãã£ãåå¾ã®ææ°ã®ã³ã³ãã³ããã¦ã¼ã¶ã¼ã«è¡¨ç¤ºããããã¨ãä¿è¨¼ããã¾ããDocument.prerendering
ããããã£ã使ç¨ãã¦ãäºåã¬ã³ããªã³ã°ããããã¼ã¸ã§å®è¡ããã®ãå»¶æããï¼ã使ç¨ãã¾ãã
<iframe>
ã®ã³ã³ãã³ãã®èªã¿è¾¼ã¿ã¯é
å»¶ããã¾ããããã¯ãäºåã¬ã³ããªã³ã°ãèªèãã¦ããªããªãªã¸ã³ã®ç°ãªããã¼ã¸ãèªã¿è¾¼ã¾ãããã¨ã§çºçããä¸å
·åãåé¿ãããããã®ãã¬ã¼ã ã«å
¬éããè³æ ¼æ
å ±ãã¹ãã¬ã¼ã¸ã«é¢ããè¤éããé¿ããããã§ããã¤ã¾ããå ´åã«ãã£ã¦ã¯ãã¦ã¼ã¶ã¼ã«ã¯æåã¯ç©ºç½ã®ãã¬ã¼ã ã表示ãããå ´åãããã¾ãããåºåæè¡ãªã©ãã»ã¨ãã©ã®ãµã¼ããã¼ãã£ã®ã¦ã£ã¸ã§ããã¯ãäºåã¬ã³ããªã³ã°ä¸ãå®å
¨ã«ä½¿ç¨ã§ããã¨ãããã¨ã§ããprerenderingchange
ã¤ãã³ãã使ç¨ãã¦ã¢ã¯ãã£ãåããã¾ã§èªã¿è¾¼ãã®ãé¿ãã¦ãã ããããµã¼ãã¼ãã¬ã³ããªã³ã°ããç¶æ ã«ã¯ã主㫠2 ã¤ã®ç¨®é¡ãããã¾ããããã¯å¤ãç¶æ ã¨ã¦ã¼ã¶ã¼å¥ã®ç¶æ ã§ããããã¯å®å ¨ã§ãªãå èªã¿ã¨äºåã¬ã³ããªã³ã°ã®ä¸¡æ¹ãçºçãããå¯è½æ§ãããã¾ãã
https://site.example/a
ãã¿ã 1 ã«ã https://site.example/b
ãã¿ã 2 ã«ã¢ã¯ã»ã¹ãã¾ããhttps://site.example/b
ã https://site.example/c
ãäºåã¬ã³ããªã³ã°ãã¾ãããã°ã¢ã¦ãç¶æ
ã§äºåã¬ã³ããªã³ã°ããã¾ããhttps://site.example
ï¼ã¿ã 1ï¼ã§ãã°ã¤ã³ãã¾ããhttps://site.example/c
ã¸ã®ãªã³ã¯ãã¯ãªãã¯ããã¨ãäºåã¬ã³ããªã³ã°ããããã¼ã¸ãã¢ã¯ãã£ãã«ãªãã¾ããhttps://site.example/c
ã®ãã°ã¢ã¦ããããã¥ã¼ã表示ããããããã¦ã¼ã¶ã¼ã¯ãã°ã¤ã³ãã¦ããã¨æã£ã¦ããã®ã§æ··ä¹±ãã¾ããã¦ã¼ã¶ã¼å¥ã®ç¶æ ã®åé¡ã¯ãä¾ãã°è¨èªè¨å®ããã¼ã¯ã¢ã¼ãã®ç°å¢è¨å®ãã«ã¼ãã¸ã®ååã®è¿½å ãªã©ãä»ã«ãã¦ã¼ã¶ã¼è¨å®ã«ãã£ã¦çºçãããã¨ãããã¾ããã¾ããåä¸ã®ã¿ãã®ã¿ãé¢ä¿ãã¦ããå ´åã«ãçºçãããã¨ãããã¾ãã
https://site.example/product
ã«ã¢ã¯ã»ã¹ããã¨ãã¾ããhttps://site.example.com/product
ã https://site.example.com/cart
ãäºåã¬ã³ããªã³ã°ãã¾ããäºåã¬ã³ããªã³ã°ãããã«ã¼ãã®ã¢ã¤ãã æ°ã¯ 0 ã§ããhttps://site.example.com/cart
ã¸ã®ãªã³ã¯ãã¯ãªãã¯ããã¨ãäºåã¬ã³ããªã³ã°ããããã¼ã¸ãã¢ã¯ãã£ãã«ãªãã¾ãããã®ãããªå ´åãããã¦å®éã«ã³ã³ãã³ãããµã¼ãã¼ã¨åæããªããªããããªå ´åã®æåã®ç·©åçã¯ãå¿
è¦ã«å¿ãã¦ãã¼ã¸ãæ´æ°ãããã¨ã§ããä¾ãã°ããµã¼ãã¼ã¯ããã¼ããã£ã¹ããã£ã³ãã« API ã fetch()
ã WebSocket
ã®ãããªå¥ã®ã¡ã«ããºã ã使ç¨ããããããã¾ããããã¼ã¸ã¯ãã¾ã ã¢ã¯ãã£ãã«ãªã£ã¦ããªãææ©çã«èªã¿è¾¼ã¾ãããã¼ã¸ãå«ããé©åã«æ´æ°ãããã¨ãã§ãã¾ãã
äºåã¬ã³ããªã³ã°ä¸/äºåã¬ã³ããªã³ã°æ¸ã¿ã®ææ¸ãã¢ã¯ãã£ãã«ããã¨ãã¨ã³ãã¦ã¼ã¶ã¼ã®è¦ç¹ã§è¦ãã°ã徿¥ã®ããã²ã¼ã·ã§ã³ã¨åãããã«åä½ãã¾ããã¢ã¯ãã£ãåãããææ¸ã¯ã¿ãã«è¡¨ç¤ºãããã»ãã·ã§ã³å±¥æ´ã«è¿½å ãããæ¢åã®åæ¹å±¥æ´é ç®ã¯åé¤ããã¾ããã¢ã¯ãã£ãåãããåã«äºåã¬ã³ããªã³ã°ãããé²è¦§ã³ã³ããã¹ãã«é ç½®ãããããã²ã¼ã·ã§ã³ã¯ãã»ãã·ã§ã³å±¥æ´ã«å½±é¿ãä¸ãã¾ããã
éçºè ã®è¦ç¹ããè¦ãã¨ãäºåã¬ã³ããªã³ã°ãããææ¸ã¯ãç¾å¨ã®é ç®ã¨ãã 1 ã¤ã®é ç®ããåå¨ããªãå¾®å°ãªã»ãã·ã§ã³å±¥æ´ãããã¨èãããã¨ãã§ãã¾ããäºåã¬ã³ããªã³ã°ãããã³ã³ããã¹ãå ã®ããã²ã¼ã·ã§ã³ã¯ãã¹ã¦å¹æçã«ç½®ãæããã¾ãã
ã»ãã·ã§ã³å±¥æ´ãå¦çãã API æ©è½ï¼ä¾ãã° History
ã Navigation
ï¼ã¯äºåã¬ã³ããªã³ã°ææ¸å
ã§å¼ã³åºããã¨ãã§ãã¾ããããããã¯ã³ã³ããã¹ãã®å¾®å°ãªã»ãã·ã§ã³å±¥æ´ãå¦çããã ãã§ãããã®çµæãäºåã¬ã³ããªã³ã°ãããææ¸ã¯åç
§ãããã¼ã¸ã®å
±åã»ãã·ã§ã³å±¥æ´ã«å±ãã¾ãããä¾ãã°ã History.back()
ã«ãã£ã¦ãªãã¡ã©ã¼ã«ç§»åãããã¨ã¯ã§ãã¾ããã
ãã®è¨è¨ã«ãããã¦ã¼ã¶ã¼ãæ»ããã¿ã³ã使ç¨ããã¨ãã«æå¾ ããçµé¨ãå¾ããã¨ãã¤ã¾ããæå¾ã«è¦ããã®ã«æ»ããã¨ã確å®ã«ãã¾ããäºåã¬ã³ããªã³ã°ææ¸ãã¢ã¯ãã£ãã«ãªãã¨ãåä¸ã®ã»ãã·ã§ã³å±¥æ´é ç®ã®ã¿ãçµåã»ãã·ã§ã³å±¥æ´ã«è¿½å ãããäºåã¬ã³ããªã³ã°é²è¦§ã³ã³ããã¹ãå ã§èµ·ãã£ãååã¾ã§ã®æä½ã¯ç¡è¦ããã¾ããçµåã»ãã·ã§ã³å±¥æ´ã 1 æ®µéæ»ãã¨ï¼ä¾ãã°æ»ããã¿ã³ãæ¼ãã¨ï¼ãã¦ã¼ã¶ã¼ã¯åç §å ã®ãã¼ã¸ã«æ»ãã¾ãã
äºåã¬ã³ããªã³ã°ä¸ã«å»¶æã¾ãã¯å¶éããããã©ãããã©ã¼ã æ©è½äºåã¬ã³ããªã³ã°ããããã¼ã¸ã¯éè¡¨ç¤ºç¶æ ã§éããããããæ½å¨çã«éªéã«ãªãåä½ãå¼ãèµ·ããããã¤ãã® API æ©è½ã¯ããã®ç¶æ ã§ã¯æå¹åãããã代ããã«ãã¼ã¸ãæå¹åãããã¾ã§é å»¶ããã¾ããäºåã¬ã³ããªã³ã°æã«åé¡ã¨ãªããã®ä»ã®ã¦ã§ããã©ãããã©ã¼ã æ©è½ã¯ããã¹ã¦å¶éããã¾ãããã®ç« ã§ã¯ãé å»¶ã¾ãã¯å¶éãããæ©è½ã®è©³ç´°ã«ã¤ãã¦èª¬æãã¾ãã
ã¡ã¢: å»¶æããã³å¶éãå®ç¾ä¸å¯è½ãªããå°æ°ã®ã±ã¼ã¹ã§ã¯ãäºåã¬ã³ããªã³ã°ã¯åãæ¶ããã¾ãã
éåæ API ã®å»¶æå»¶æã¨ã¯ãAPI æ©è½ã«ãã£ã¦å¾ æ©ä¸ã®ãããã¹ãããã«è¿ããããã¼ã¸ãã¢ã¯ãã£ãã«ãªãã¾ã§ä½ãå®è¡ãããªããã¨ãæå³ãã¾ããã¢ã¯ãã£ãåå¾ãæ©è½ã¯é常ã©ããå®è¡ããããããã¹ã¯é常ã©ãã解決ã¾ãã¯æå¦ããã¾ãã
以ä¸ã®éåææ©è½ã®çµæã¯ãã¢ã¯ãã£ãåãããã¾ã§ãäºåã¬ã³ããªã³ã°ãããææ¸å ã§å»¶æããã¾ãã
MediaDevices.selectAudioOutput()
BackgroundFetchManager.fetch()
BroadcastChannel.postMessage()
CredentialsContainer.create()
, CredentialsContainer.get()
, CredentialsContainer.store()
Navigator.requestMediaKeySystemAccess()
Navigator.getGamepads()
, gamepadconnected
ã¤ãã³ã, gamepaddisconnected
ã¤ãã³ãGeolocation.getCurrentPosition()
, Geolocation.watchPosition()
, Geolocation.clearWatch()
HTMLMediaElement
API: ææ¸ãäºåã¬ã³ããªã³ã°ããã¦ããéãåçä½ç½®ã¯åé²ãã¾ãããIdleDetector.start()
MediaDevices.getUserMedia()
ï¼ããã³å¤ã Navigator.getUserMedia()
ãã¼ã¸ã§ã³ï¼, MediaDevices.enumerateDevices()
Notification()
constructor, Notification.requestPermission()
PushManager.subscribe()
ScreenOrientation.lock()
, ScreenOrientation.unlock()
Sensor.start()
ServiceWorker.postMessage()
, ServiceWorkerContainer.register()
, ServiceWorkerRegistration.update()
, ServiceWorkerRegistration.unregister()
StorageManager.persist()
AudioContext
ãéå§ãããã¨ã¯ã§ãã¾ãããBluetooth.getDevices()
, Bluetooth.requestDevice()
HID.getDevices()
, HID.requestDevice()
LockManager.query()
, LockManager.request()
Navigator.requestMIDIAccess()
NDefReader.write()
, NDefReader.scan()
Serial.getPorts()
, Serial.requestPort()
SpeechRecognition.abort()
, SpeechRecognition.start()
, SpeechRecognition.stop()
, SpeechSynthesis.cancel()
, SpeechSynthesis.pause()
, SpeechSynthesis.resume()
, SpeechSynthesis.speak()
USB.getDevices()
, USB.requestDevice()
XRSystem.requestSession()
download
屿§ãæã¤ <a>
㨠<area>
è¦ç´ ã¯ãäºåã¬ã³ããªã³ã°ãå®äºããã¾ã§ãã¦ã³ãã¼ããå»¶æããã¾ããjavascript:
URLdata:
URLblob:
URLabout:
URLã about:blank
㨠about:srcdoc
ãå«ãWindow.sessionStorage
ã使ç¨ãããã¨ãã§ãã¾ãããä¸åº¦ã« 1 ã¤ã®ãã¼ã¸ã ããã¿ãã®ã»ãã·ã§ã³ ã¹ãã¬ã¼ã¸ã«ã¢ã¯ã»ã¹ãããã¨ãæ³å®ãã¦ãããµã¤ããå£ããªãããã«ãåä½ã¯ã¨ã¦ãç¹æ®ã§ãããã®ãããäºåã¬ã³ããªã³ã°ããããã¼ã¸ã¯ã使ããã¨ãã«ä½æãããã¿ãã®ã»ãã·ã§ã³ ã¹ãã¬ã¼ã¸ã®ç¶æ
ã®è¤è£½ããéå§ãã¾ããã¢ã¯ãã£ãã«ãªãã¨ãäºåã¬ã³ããªã³ã°ããããã¼ã¸ã®ã¹ãã¬ã¼ã¸è¤è£½ã¯ç ´æ£ããã代ããã«ã¿ãã®ã¡ã¤ã³ã¹ãã¬ã¼ã¸ç¶æ
ã使ç¨ããã¾ããã»ãã·ã§ã³ã¹ãã¬ã¼ã¸ã使ç¨ãããã¼ã¸ã¯ã prerenderingchange
ã¤ãã³ãã使ç¨ãã¦ããã®ã¹ãã¬ã¼ã¸ã®å
¥ãæ¿ããçºçããã¿ã¤ãã³ã°ãæ¤åºãããã¨ãã§ãã¾ããWindow.print()
: ãã®ã¡ã½ããã¸ã®å¼ã³åºãã¯ç¡è¦ããã¾ããWindow.alert()
ã¯ããã¤ã¢ãã°ã表示ãããã¨ãªãããã«è¿ãã¾ããWindow.confirm()
ã¯ããã¤ã¢ãã°ã表示ãããã¨ãªãããã« false
ãè¿ãã¾ããWindow.prompt()
ã¯ããã¤ã¢ãã°ã表示ãããã¨ãªãããã«ç©ºæåå (""
) ãè¿ãã¾ãã<iframe>
ã®èªã¿è¾¼ã¿ã¯ãäºåã¬ã³ããªã³ã°ãããå¾ããã¼ã¸ãã¢ã¯ãã£ãã«ãªãã¾ã§å»¶æããã¾ããææ©ã«ã¼ã« API ã¯ç¬èªã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®ç¾©ãã¦ãã¾ããã
ä»ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®æ¡å¼µDocument.prerendering
Experimental
è«çå¤ããããã£ã§ãææ¸ãç¾å¨äºåã¬ã³ããªã³ã°ããã¤ã¤ããå ´åã« true
ãè¿ãã¾ãã
prerenderingchange
ã¤ãã³ã Experimental
äºåã¬ã³ããªã³ã°ãããææ¸ãã¢ã¯ãã£ãã«ãªã£ãï¼ã¦ã¼ã¶ã¼ããã¼ã¸ã表示ããï¼ã¨ãã«çºè¡ããã¾ãã
PerformanceNavigationTiming.activationStart
Experimental
ææ¸ãäºåã¬ã³ããªã³ã°ãéå§ãã¦ããã¢ã¯ãã£ãã«ãªãã¾ã§ã®æéãè¡¨ãæ°å¤ã
PerformanceResourceTiming.deliveryType
"navigational-prefetch"
å¤ Experimental
ããã©ã¼ãã³ã¹é ç®ã®ç¨®å¥ãå èªã¿ã§ãããã¨ã示ãã¾ãã
Content-Security-Policy
'inline-speculation-rules'
å¤ Experimental
åå¾ããææ¸ã«ææ©ã«ã¼ã«ãå®ç¾©ããããã« <script type="speculationrules">
ã®ä½¿ç¨ã許å¯ãããªããã¤ã³ã«ä½¿ç¨ãã¾ãã
Speculation-Rules
Experimental
ææ©ã«ã¼ã« JSON å®ç¾©ãå«ãããã¹ããªã½ã¼ã¹ãæã URL ã®ãªã¹ããæä¾ãã¾ããã¬ã¹ãã³ã¹ã HTML ææ¸ã®å ´åããããã®ã«ã¼ã«ã¯ææ¸ã®ææ©ã«ã¼ã«ã»ããã«è¿½å ããã¾ãã
Supports-Loading-Mode
Experimental
ããã²ã¼ã·ã§ã³å¯¾è±¡ãããããªã¹ã¯ã®é«ãæ§ã
ãªèªã¿è¾¼ã¿ã¢ã¼ãã使ç¨ãããã¨ããªããã¤ã³ããããã«è¨å®ãã¾ããä¾ãã°ãç°ãªããªãªã¸ã³éãåããµã¤ãã®äºåã¬ã³ããªã³ã°ã«ã¯ Supports-Loading-Mode
ã®å¤ã¨ã㦠credentialed-prerender
ãè¦æ±ããã¾ãã
<script type="speculationrules">
Experimental
ç¾å¨ã®ææ¸å ã®å èªã¿ãäºåã¬ã³ããªã³ã°ã®ææ©ã«ã¼ã«ãå®ç¾©ããããã«ä½¿ç¨ãã¾ãããããã®ã«ã¼ã«ã¯ããã®ææ¸ã®ææ©ã«ã¼ã«ã»ããã«è¿½å ããã¾ãã
å®å ¨ãªäºåã¬ã³ããªã³ã°ã®ãã¢ã¯ãã¡ãã«ããã¾ãã
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ api.Document.prerendering api.Document.prerenderingchange_event html.elements.script.type.speculationrules é¢é£æ å ±RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4