检测是否JQuery CDN down并处理它

Detecting if the JQuery CDN is down and coping with it

本文关键字:处理 down CDN 是否 JQuery 检测      更新时间:2023-09-26

我明天就要发布自己的网站了,预计会有几百次访问。

我根据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>'; }
?>

基本上,如果code.jquery.com的CDN宕机了(就像20分钟前一样),那么Google API库就会启动。我已经尝试了它,而jQuery是向上的,它的工作原理,但只是以防它再次下降,这个脚本实际上会工作吗?(通过切换到谷歌的库)我不能真正测试它,我必须使code.jquery.com离线。哈哈

我想做CSS替换,但我的整个网站是基于jQuery和Ajax,所以我真的需要它在任何时候都能正常工作。我会把它放在我自己的网站上,但是我的网站在运行良好的情况下没有code.jquery.com或googleapis.com快。

谢谢!非常感谢您的回复

为什么要在服务器端这么做呢?在客户端做这个会更有意义:

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

或者您可以使用basic 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>

这对你没有多大好处。在每个请求中放入fetch会大大降低速度。此外,如果您有上游缓存,则无论如何都不会反映更改。

我会选择一个完全javascript的解决方案:尝试加载一个,如果它不起作用,尝试另一个。

我相信这会很好地工作,但是这会给服务器的每个请求增加很多开销。

在客户端使用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>

您可以测试(在本地/测试服务器上)通过简单地在您的hosts文件(linux/etc/hosts, windows'system32'drivers'etc'hosts)中放入code.jquery.com的条目指向,例如,在您的网络上未使用的本地ip。系统将暂时将其视为code-jquery.com的DNS,并且不会从那里得到响应。