Измерение коэффициента попадания в 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" />

Другие вопросы по тегам