Измерение коэффициента попадания в HTTP-кеш посетителя для внешних ресурсов CDN
Мой сайт использует несколько общих ресурсов, размещенных на CDN, например: bootstrap.css
, jquery.js
а также fontawesome.css
, Можно ли получить информацию, возможно, с помощью JavaScript, имеют ли посетители моего сайта теплые кэши для этих ресурсов в своих веб-браузерах?
1 ответ
Хотя это и не ответ, некоторые интересные идеи я нашел, работая над этой проблемой с Chrome:
Извлечение ресурса из CDN является отложенным вызовом, в то время как извлечение элемента из кэша фактически является блокирующим вызовом, несмотря на то, что он довольно быстрый.
Firefox, похоже, не всегда демонстрировал это поведение (и я даже не беспокоился о IE).
Чтобы проверить это наблюдение, я построил следующую небольшую скрипку, которая надежно работает для меня в Chrome. Пожалуйста, оставьте комментарий к своим результатам теста, если у вас есть время.
var testSource = function(href) {
var timeLimit = 5;
var l = document.createElement("link");
l.rel = "stylesheet";
l.type = "text/css";
l.href = href;
var s1 = document.createElement("script");
s1.innerHTML = "window.d = new Date();";
var s2 = document.createElement("script");
s2.innerHTML = "window.d2 = new Date();";
document.head.appendChild(s1);
document.head.appendChild(l);
document.head.appendChild(s2);
window.setTimeout(function() {
var p = document.createElement("p");
if (typeof(d2) === "undefined" || d2 - d > timeLimit) {
p.innerHTML = "guess cache";
} else {
p.innerHTML = "guess load";
}
p.innerHTML += " (" + href + ")";
document.body.appendChild(p);
},
timeLimit * 10);
}
btn.onclick = function() {
testSource(inp.value);
}
<input type="text" id="inp" value="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" />
<input type="button" id="btn" value="test url" />