Php 检测JQuery CDN是否出现故障并处理
明天我将启动我自己的网站,我期待着几百次访问 我根据PHP.net告诉我的内容编写了这个脚本: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>';
<?
$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>