Найти jQuery кеш попал в CDN - PullRequest
8 голосов
/ 21 февраля 2012

Если вы включаете jQuery из CDN, есть ли способ определить, выбрал ли пользователь содержимое из CDN или извлек его из своего кэша?

Очевидно, что попадание в кэш не делает HTTP-запрос, но не могли бы вы проверить это и сообщить Javascript обратно на ваш собственный сервер с данными?

Ответы [ 6 ]

1 голос
/ 01 марта 2012

Почему бы просто не использовать CHARLES или подобный прокси-сервер для отладки для определения скорости загрузки?

Если вы хотите узнать скорость с точки зрения клиента из нескольких мест, используйте http://www.webpagetest.org/ с двумя разными версиямивашего веб-сайта (один с CDN, другой со статическим расположением самостоятельно) и сравните скорости загрузки.Лично, если у вас нет большого количества пользовательского кода JavaScript, имеет смысл использовать CDN для jQuery, тем более что многие сайты используют API библиотек Google для jQuery.

1 голос
/ 29 февраля 2012

Тестирование 304 (без изменений) было бы затруднено без использования ajax.И использование ajax будет очень трудным, если вы не обойдете ту же политику происхождения в CDN.

Я предполагаю, что вы хотите проверить фактическое время загрузки скриптов и их доступности на клиентах, и хотите сравнить этоданные с использованием CDN против чего-то локального.Если так, то не лучше ли проверить реальное время, а не выполнять какой-либо тест кеша?

Довольно легко настроить A / B-тест текущего времени загрузки скриптов.

Для теста A вы можете выполнить разделение CDN / локальное

<script>var _time = new Date().getTime();</script>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="project.js"></script>
<script>_time = new Date().getTime() - _time;</script>

И B проверить слияние локального сценария или что-то еще:

<script>var _time = new Date().getTime();</script>
<script src="project.includingjquery.min.js"></script>
<script>_time = new Date().getTime() - _time;</script>

Затем сообщите переменную _time в аналитику или в свою собственную базу данных, используя ajax.Если у пользователей B меньше _time, вы знаете, что это правильный путь ...

1 голос
/ 29 февраля 2012

Если у вас есть вход в CDN (мы, кажется, не?), Вы можете изменить URL-адрес CDN для тестовых запусков, а также использовать URL-адрес pingback на вашем сервере. В течение определенного периода времени сравнивайте количество посещений URL-адреса ping back и время обращения с URL-адресами CDN и количеством уникальных посетителей.

Вы должны быть в состоянии получить представление о том, сколько уникальных хитов на вашем URL-адресе CDN вы получаете против уникальных хитов, которые вы получаете на своей странице. Разница должна быть в ботах, скребках и кешировании или неудачной загрузке ресурсов. Боты, которых вы можете устранить, вероятно, и скребки, так что ваши% возрасты должны быть отражающими в течение достаточно длительного периода.

Будет ли это работать для вас?

Мы делаем это на ресурсах, отличных от cdn, чтобы посмотреть, загружают ли люди последние CSS-файлы или нет, чтобы принудительно изменять имя только на тех IP-адресах, которые, по-видимому, кэшировали ресурс после изменения файла css.

0 голосов
/ 28 февраля 2012
<script>var s=new Date().getTime();</script>
<script src="cdncontent"></script>
<script>
var s = new Date().getTime() - s;
if (s < 100) {
  //likely from cache
} else {
  //likely from CDN
}
</script>
0 голосов
/ 24 февраля 2012

Если вы захотите добавить некоторую массу на страницу, чтобы проверить это, вы можете добавить ajax-запрос к CDN для jQuery, а затем проверить заголовки для ответа 304.Если затем вы создадите второй ajax-запрос для отправки запроса на ваш сервер, сообщающий вам, был ли jQuery кэширован или нет, то есть, был ли ответ 200 или 304.Я не пробовал этого, но он должен работать, но он добавит несколько дополнительных запросов для ваших пользователей, но, учитывая тот факт, что они будут асинхронными, это, вероятно, не окажет никакого влияния.

0 голосов
/ 21 февраля 2012

Всегда стоит загружать ресурсы из CDN. Единственным недостатком является то, находится ли CDN географически близко к пользователю или нет. Вам нужно проверить свою целевую аудиторию и решить, лучше ее использовать или нет. В случае jquery я всегда использую Google CDN, который я считаю реальным и надежным.

...