在CDN失败时获取远程脚本的后备副本

时间:2014-12-22 17:12:29

标签: javascript jquery google-api cdn google-plus-one

我的网站上有一个Google +1按钮,需要以下脚本:

<script src="https://apis.google.com/js/platform.js" async defer></script>

问题是到目前为止,apis.google.com无法从任何地方进行ping操作(服务器已关闭),而且我的部分用户看不到按钮。我并不总是想使用我自己的脚本副本,因为我可以看到在某些时候打破+1功能。我想使用像this question这样的解决方案:我的服务器后备副本只有在CDN失败时才能获取。

这个脚本的好方法是什么?有没有一种通用的方法来使用jQuery或plain js为任何远程脚本执行此操作?提前谢谢。

修改 我尝试了jQuery getScript()并将其包装在这样的函数中:

function fetch_script(script,fallback) {
    $.getScript( script )
        .fail(function() {
            $.getScript( fallback );
    });
};

这并不总是有效且不可靠。我发现了两个问题:

  1. 500错误会触发失败方法,但404错误不会触发,并且在这些情况下不会加载回退脚本。不确定如果服务器刚刚关闭会发生什么。
  2. 提取了一些脚本(我在控制台中看到了这个脚本),但是某些脚本没有被执行(或者它们无声地失败)。这里的a script无效。

0 个答案:

没有答案