处理公共CDN突然失效的情况

公共CDN的使用

 

刚开始开发我的博客时,使用的bootcdn,发现他们被黑过,虽然想骂那些“黑客”,但是我们也没办法去防范,只能从自己的网站上入手解决。

那时我还没技术解决这个问题,网上搜过,大都只提问题不提解决。。。

如今尝试一番暂且解决了该问题。(一切建立在源站没被黑的前提下)

 

思考方案

 

浏览器加载js是顺序执行的,这里不提async和defer,只提onerror。

考虑以下HTML(chrome测试):

<head>
    // ------ 方法1 -----
    <script src="https://bootcdn.cn/jquery.min.js" onerror="this.src='mystatic/jquery.min.js'">script>
    // ------- END -------

    // ------ 方法2 -----
    <script>
        function exchange(e, s){
            let new_s = document.createElement('script');
            new_s.src = s;
            document.head.insertBefore(new_s, e);
            e.remove();
        }
    script>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js" onerror="exchange(this, 'mystatic/jquery.min.js')">script>
    // ------- END -------
head>
<body>
    <div id="main">somethingdiv>
    <script>
        window.onload = ()=>{
            $('#main').text('other thing');
        }
    script>
body>
  •  方法一:萌新错误。浏览器仅请求bootcdn,失败后修改src,但js文件和img不同,浏览器不会下载`mystatic/jquery.min.js`而是继续向下执行,到`$`处报错。
  •  方法二:浏览器请求bootcdn,失败后执行`exchange`函数创建一个新的`

你可能感兴趣的:(处理公共CDN突然失效的情况)