Как проверить, находится ли jQuery в кеше? - PullRequest
13 голосов
/ 04 января 2011

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 04 января 2011

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

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

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

1 голос
/ 04 января 2011

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

<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 голосов
/ 04 января 2011

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

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

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

Bart

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...