Как проверить, находится ли jQuery в кеше?

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

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

ЗАМЕЧАНИЕ, что я не хочу проверять загрузку jQuery, но особенно если он был загружен из CDN.

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

Ответ 1

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

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

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

Ответ 2

Это должно сделать это:

<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>

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

Ответ 3

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

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

Надеюсь, что это поможет,

Барта