Обнаружение, если JQuery CDN не работает и справляется - PullRequest
7 голосов
/ 20 октября 2011

Завтра я запускаю свой собственный сайт и ожидаю пару сотен посещений.

Я написал этот сценарий на основе того, что сказал мне PHP.net:

<?
$f = fsockopen("code.jquery.com", 80, $errno, $errstr, 30); 
if(!$f){
echo '<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>'; }
else {
echo '<script src="http://code.jquery.com/jquery-1.6.4.min.js" type="text/javascript"></script>'; }
?>

По сути, если CDN code.jquery.com когда-либо не работает (как это было около 20 минут назад),затем включится библиотека API Google. Я пробовал это, пока jQuery был включен, и он работает, но на случай, если он снова выйдет из строя, будет ли этот скрипт работать?(переключаясь на библиотеку Google) Я не могу проверить это, мне придется заставить code.jquery.com отключиться.лол.

Я бы делал замены CSS, но весь мой сайт основан на jQuery и Ajax, поэтому мне действительно нужно, чтобы он работал постоянно.Я бы разместил его на своем собственном сайте, но мой сайт работает не так быстро, как code.jquery.com или googleapis.com, когда они работают нормально.

Большое спасибо!Любые отзывы с благодарностью:)

Ответы [ 5 ]

22 голосов
/ 20 октября 2011

Зачем вам делать это на стороне сервера?было бы разумнее сделать это на стороне клиента:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="http://code.jquery.com/jquery-1.6.4.min.js">\x3C/script>')</script>

Сначала попытается загрузить библиотеку из Google.Если он загрузится, тогда будет доступно window.jQuery.Если нет, то он пытается загрузить с code.jquery.com.Вы можете даже вставить другое после этих двух, чтобы загрузить локальную версию, если ни одна из них не загружена:

<script>window.jQuery || document.write('<script src="my/js/jquery-1.6.4.min.js">\x3C/script>')</script>
11 голосов
/ 20 октября 2011

или вы можете сделать это с помощью базового HTML:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>
5 голосов
/ 20 октября 2011

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

Я бы выбрал полностью javascript-решение: попробуйте загрузить одно, а если оно не работает, попробуйте другое.

2 голосов
/ 20 октября 2011

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

Сделайте это на стороне клиента с помощью JavaScript,

<script src=http://code.jquery.com/jquery-1.6.4.min.js"></script>
 <script>window.jQuery || document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js">\x3C/script>')</script>
0 голосов
/ 14 мая 2013

Вы можете протестировать (на локальном / тестовом сервере), просто поместив запись для code.jquery.com в свой файл hosts (/ etc / hosts в linux, windows \ system32 \ drivers \ etc \ hosts в windows), указав например, локальный ip, который не используется в вашей сети. Система временно увидит это как DNS для code-jquery.com и не получит оттуда ответ.

...