Baseline Widely available *
ã¡ã¢: ãã®æ©è½ã¯ã¦ã§ãã¯ã¼ã«ã¼å ã§å©ç¨å¯è½ã§ãã
cache
㯠Request
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®èªã¿åãå°ç¨ããããã£ã§ããªã¯ã¨ã¹ãã®ãã£ãã·ã¥ã¢ã¼ããä¿æãã¾ãããªã¯ã¨ã¹ãããã©ã¦ã¶ã¼ã® HTTP ãã£ãã·ã¥ ã¨ã©ã®ããã«ä½ç¨ããããå¶å¾¡ãã¾ãã
RequestCache
å¤ã§ãã使ç¨å¯è½ãªå¤ã¯æ¬¡ã®ã¨ããã§ãã
default
â ãã©ã¦ã¶ã¼ã¯ã HTTP ãã£ãã·ã¥ã§ä¸è´ãããªã¯ã¨ã¹ããæ¢ãã¾ãã
no-store
â ãã©ã¦ã¶ã¼ã¯ãæåã«ãã£ãã·ã¥ã調ã¹ãã«ãªã¢ã¼ããµã¼ãã¼ãããªã½ã¼ã¹ãèªã¿åããããã¦ã³ãã¼ããããªã½ã¼ã¹ã§ãã£ãã·ã¥ãæ´æ°ãã¾ããã
reload
â ãã©ã¦ã¶ã¼ã¯ãæåã«ãã£ãã·ã¥ã調ã¹ãã«ãªã¢ã¼ããµã¼ãã¼ãããªã½ã¼ã¹ãèªã¿åããããã¦ã³ãã¼ããããªã½ã¼ã¹ã§ãã£ãã·ã¥ãæ´æ°ãã¾ãã
no-cache
â ãã©ã¦ã¶ã¼ã¯ã HTTP ãã£ãã·ã¥ã§ä¸è´ãããªã¯ã¨ã¹ããæ¢ãã¾ãã
force-cache
â ãã©ã¦ã¶ã¼ã¯ã HTTP ãã£ãã·ã¥ã§ä¸è´ãããªã¯ã¨ã¹ããæ¢ãã¾ãã
only-if-cached
â ãã©ã¦ã¶ã¼ã¯ã HTTP ãã£ãã·ã¥ã§ä¸è´ãããªã¯ã¨ã¹ããæ¢ãã¾ãã Experimental
"only-if-cached"
ã¢ã¼ãã¯ããªã¯ã¨ã¹ãã® mode
ã "same-origin"
ã®å ´åã«ã®ã¿ä½¿ç¨ã§ãã¾ãããªã¯ã¨ã¹ãã® redirect
ããããã£ã "follow"
ã§ããããªãã¤ã¬ã¯ãã "same-origin"
ã¢ã¼ãã«éåãã¦ããªãå ´åããã£ãã·ã¥ããããªãã¤ã¬ã¯ããè¡ãã¾ãã
// ãã£ãã·ã¥ãå®å
¨ã«ãã¤ãã¹ããããã«ããã£ãã·ã¥ç¡å¹ã§
// ãªã½ã¼ã¹ããã¦ã³ãã¼ããã¾ãã
fetch("some.json", { cache: "no-store" }).then((response) => {
/* ã¬ã¹ãã³ã¹ãæ¶è²» */
});
// ãã£ãã·ã¥ç¡å¹ã§ãªã½ã¼ã¹ããã¦ã³ãã¼ããã¾ããã
// ãã¦ã³ãã¼ããããªã½ã¼ã¹ã§ HTTP ãã£ãã·ã¥ãæ´æ°ãã¾ãã
fetch("some.json", { cache: "reload" }).then((response) => {
/* ã¬ã¹ãã³ã¹ãæ¶è²» */
});
// æ£ãã ETag ããã³ Date ãããã¼ãéä¿¡ããIf-Modified-Since ã¨
// If-None-Match ãªã¯ã¨ã¹ããããã¼ãé©åã«å¦çããããé©åã«
// æ§æããããµã¼ãã¼ãæ±ãéã«ã¯ããã£ãã·ã¥ç¡å¹ã§ãªã½ã¼ã¹ã
// ãã¦ã³ãã¼ããã¾ããããã«ãããæ°é®®ãªã¬ã¹ãã³ã¹ãä¿è¨¼ãã
// æ¤è¨¼ãã·ã³ã©ã¤ã³ãããã¨ãã§ãã¾ãã
fetch("some.json", { cache: "no-cache" }).then((response) => {
/* ã¬ã¹ãã³ã¹ãæ¶è²» */
});
// çµæ¸æ§ãèæ
®ãã¦ãªã½ã¼ã¹ããã¦ã³ãã¼ããã¾ããã§ããã ãå¤ãã®
// 帯åå¹
ã確ä¿ããããã«ããã£ãã·ã¥ãããå¤ãã¬ã¹ãã³ã¹ãåªå
ãã¾ãã
fetch("some.json", { cache: "force-cache" }).then((response) => {
/* ã¬ã¹ãã³ã¹ãæ¶è²» */
});
// åç´ãªæéåããåæ¤è¨¼ããã¯ã©ã¤ã¢ã³ãã¬ãã«ã®å®è£
ã
// ãã£ãã·ã¥ãããå¤ãã¬ã¹ãã³ã¹ãåªå
ãã¾ããããã¾ãã«ãå¤ãå ´åã¯æ´æ°ãã¾ãã
// AbortController ããã³ signal ã«ãããããããã¡ã¢ãªã¼ã®æé¤ãã§ãã¾ãã
// å®éã«ã¯ãå¤ã夿´ããå¿
è¦ãããããããã¹ã¨ã³ã³ããã¼ã©ã¼ã®åç
§ãåã颿°ã¨ãªãã¾ãã
let controller = new AbortController();
fetch("some.json", {
cache: "only-if-cached",
mode: "same-origin",
signal: controller.signal,
})
.catch((e) =>
e instanceof TypeError && e.message === "Failed to fetch"
? { status: 504 } // Chrome ã®åé¿çãTypeError ã§å¤±æãã
: Promise.reject(e),
)
.then((res) => {
if (res.status === 504) {
controller.abort();
controller = new AbortController();
return fetch("some.json", {
cache: "force-cache",
mode: "same-origin",
signal: controller.signal,
});
}
const date = res.headers.get("date"),
dt = date ? new Date(date).getTime() : 0;
if (dt < Date.now() - 86_400_000) {
// 24 æé以ä¸å¤ããã°
controller.abort();
controller = new AbortController();
return fetch("some.json", {
cache: "reload",
mode: "same-origin",
signal: controller.signal,
});
}
// ãã®ä»ã®æ¡ä»¶
if (dt < Date.now() - 300_000)
// 5 å以ä¸å¤ããã°
fetch("some.json", { cache: "no-cache", mode: "same-origin" }); // no cancellation or return value.
return res;
})
.then((response) => {
/* ï¼ããããå¤ãï¼ã¬ã¹ãã³ã¹ãæ¶è²»ãã */
})
.catch((error) => {
/* AbortError/DOMException ã¾ã㯠TypeError ã¨ãªã */
});
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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