2011-01-04 2 views
13

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

if (jQuery.isLoadedFromCDN) 
//DoNothing 
else 
//load from internal resource 

Обратите внимание, что я не хочу, чтобы проверить, что загружен JQuery, но особенно если он был загружен из CDN.

Контекст: у меня есть веб-приложение для внутренней локальной сети, которое использует jQuery, загрузка jQuery из локальной сети определенно быстрее, но если он уже был загружен ранее с CDN (что, вероятно, так), то я просто хочу использовать что в противном случае я хочу получить его из нашего внутреннего ресурса, а не из cdn. Экономия пропускной способности определенно не огромна, но мне более любопытно узнать, технически ли это возможно.

ответ

0

Насколько мне известно, на самом деле это невозможно. 2 вещи перейти к виду, однако, что может помочь вам:

  1. Использование Etags: Определите свои ресурсы на стороне веб-сервера. Таким образом, ваш браузер делает это для вас: укажите, загружен ли ресурс, независимо от того, в каком домене он был загружен:
  2. Если вы действительно хотите узнать, какой домен jQuery был загружен, вы можете делать манекены AJAX-запросов. Вы можете выполнять только запросы AJAX из того же домена, из которого была загружена ваша библиотека (кроме того, когда вы делаете запрос JSONP). Поэтому, если ваш jQuery был загружен из вашего ресурса локальной сети, вы получите trplies для запросов AJAX на ваш веб-сервер вашей локальной сети, и это исключает CDN.

Надеется, что это помогает,

Барт

3

Я предполагаю, что вы проверяете, чтобы увидеть, если JQuery был загружен из Google Libraries API?

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

Разделение URL-адреса для jQuery между CDN и вашей локальной сетью приведет к получению двух копий для кэширования. Пусть кеш браузера выполняет то, что он должен был делать. :)

1

Это следует сделать это:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script> 
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.4.js"%3E%3C/script%3E'))</script> 

Вам необходимо адаптировать путь к запасному варианту, который должен быть расположен в домене.

+0

Что случилось с 1.4.4 ?! – lonesomeday

+0

@lonesomeday: только что исправлено это, я скопировал эти строки из более старого источника. – jAndy

+0

@jAndy unescape устарел! можете ли вы предложить лучшую альтернативу? – equitharn

Смежные вопросы