TL;DR Es gibt Fälle, in denen Vorausleseanforderungen (Prefetch, Prefetch) nicht nur an CSS, sondern auch an andere URLs gesendet werden. Für einen bestimmten Endpunkt
Wenn Sie die oben genannten Anforderungen haben, sollten Sie Prefetch-Maßnahmen ergreifen.
Bei der Entwicklung eines Websystems habe ich über die Ursache nachgedacht, da eine unbeabsichtigte GET-Anforderung in das Protokoll für den Testserver eingegangen ist. Nach der Untersuchung scheint es, dass der Browser die GET-Anforderung als Vorausschauprozess (Prefetch) überspringt, wenn er etwas in die Browserleiste eingibt. Da im Header für diese Anforderung ein eindeutiger Wert festgelegt ist, wird jeder Browser Der Erkennungsprozess wurde implementiert, um die Spezifikationen von zu unterstützen.
Chrome(Chromium)
Purpose: prefetch
https://www.chromestatus.com/feature/6247959677108224
https://bugs.chromium.org/p/chromium/issues/detail?id=86175#c65
Firefox
X-Moz: Prefetch
https://developer.mozilla.org/ja/docs/Web/HTTP/Link_prefetching_FAQ
Safari
X-Purpose: preview
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
public static boolean isPrefetchRequest(HttpServletRequest request) {
return StringUtils.equalsAny(request.getHeader("purpose"), "Prefetch", "prefetch") ||
StringUtils.equalsAny(request.getHeader("X-moz"), "Prefetch", "prefetch") ||
StringUtils.equalsAny(request.getHeader("X-Purpose"), "Preview", "preview");
}
――Da die Spezifikationen nicht durch eine leichte Prüfung festgelegt werden, erfolgt die Nachverfolgung unter der Annahme, dass Änderungen vorgenommen werden. --Die bereitgestellten Informationen gelten zum Zeitpunkt des Schreibens.
Recommended Posts