本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2012年10月24日 统计字数: 814字 阅读时间: 2分钟阅读 本文链接: https://soulteary.com/2012/10/24/diy-cdn-on-sae.html ----- # SAE福利:动态CDN 昨天听到一句话,有点睡不着(开心~~)。好吧,利用时间,写了一下 JavaScript 反向的 CDN。 原理是使用 JavaScript 替换用户请求的资源的地址到 SAE STOR 中的地址,如果不存在,则使用SAE反向抓取资源。 SAE PHP 程序 inspired by SaeLayer CDN, todo list: 1. SAE文件管理 2. SAE缓存管理 3. SAE文件安全判断 4. JS过滤某些TAG的链接替换 5. 插件化~ 6. PING 检测是否使用 PHP代码目前还木有到我的标准,所以,不发了,JavaScript 的话也略凌乱,不过目测可以看,贴一下。 ```js (function(CMD, CDN) { var h = document.location.hostname; function cdnRes(u, h, c) { var re = new RegExp("^(.*\/\/)(.+\.)?(" + h + ".*\.)(png|js|jpg|css)$", "i"); if (re.test(u)) { var r = u.match(re); r[0] = ''; if (!r[2]) { r[2] = ''; } else { r[2] = '/' + r[2].replace('.', '') + '/'; } u = r.join('').replace(h, c); } return u; } var o = document.getElementsByTagName('*') for (var i = 0; i < o.length; i++) { if (typeof(o[i].href) !== 'undefined') { o[i].href = cdnRes(o[i].href, h, CDN); } else if (typeof(o[i].src) !== 'undefined') { o[i].src = cdnRes(o[i].src, h, CDN); } } })('LOAD-SOULTEARY-CDN', 'thecdn.sinaapp.com'); ```