Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测JQuery CDN是否出现故障并处理_Php_Javascript_Jquery_Web_Downtime - Fatal编程技术网

Php 检测JQuery CDN是否出现故障并处理

Php 检测JQuery CDN是否出现故障并处理,php,javascript,jquery,web,downtime,Php,Javascript,Jquery,Web,Downtime,明天我将启动我自己的网站,我期待着几百次访问 我根据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>';

明天我将启动我自己的网站,我期待着几百次访问

我根据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分钟前一样),那么GoogleAPI库就会启动。我在jQuery启动时尝试过它,它可以工作,但万一它再次失败,这个脚本真的可以工作吗?(通过切换到谷歌的库)我不能真正测试它,我必须让code.jquery.com离线。哈哈

我会用CSS替换,但我的整个网站都是基于jQuery和Ajax的,所以我真的需要它随时运行。我会把它放在我自己的网站上,但我的网站在运行正常的情况下并没有code.jquery.com或googleapis.com那么快


非常感谢!非常感谢您的回复:)

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

window.jQuery | | document.write(“”)

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


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

为什么要在服务器端这样做?在客户端执行此操作更有意义:

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

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

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

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

为什么不专门链接到googleapis.com<代码>https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js
应该永远存在。为什么更喜欢code.jquery.com而不是谷歌?谷歌似乎是你的第一选择。H@BNL哈哈,个人偏好,我倾向于记住code.jquery.com的URL,而我一直忘记了谷歌的URL::@mblase75同样的原因^^:P尽管在阅读了你的评论之后,我还是把谷歌的第一个放在这个例子里了,不仅如此,但是仅仅因为自己的服务器可以/不能访问另一台服务器,这并不能告诉你客户端是否可以访问服务器。直到大约一分钟前,我才知道在JavaScript中这是可能的!哈哈,我刚刚从另一个人的回答中意识到,在第一次抓取之后立即测试jQuery,结果很好!谢谢你的回答!我不明白。请您解释一下?
窗口。如果jQuery已成功加载,jQuery
将计算为true,否则请写入文档以从辅助源加载它。+1对于+1实现:P以及感谢您的回答!我不知道这在JS中是可能的!谢谢你的回答!:)您好,我遇到了这个问题。code.jquery.com现在看起来非常慢,这个脚本等待了很长时间(>20s!)才返回到本地版本。有没有办法设置一个阈值时间,在该阈值时间之后,“外部”请求将被丢弃?在我看来,如果3秒钟后没有答案,CDN就不值得了…@Vincent Pazeller您可以尝试使用setTimeout并检查jQuery全局是否可用。请看这里:
<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>