SaeLayer CDN

关于SaeLayerCDN

SaeLayerCDN是一个基于SAE的轻巧的CDN程序,你可以利用SaeLayerCDN快速地为你的博客或者网站搭建自己的CDN,从而加速网站的加载,提升用户体验。关于CDN,更多介绍在这里

SaeLayerCDN的优势在于:

  • 基于SAE云平台,充分利用其强大的分布式架构,CDN加速效果甚至好于大部分的专业、收费的CDN。程序免费开源。
  • 一次修改,永久适用。
  • 你可以不会编程也能够为你的网站添加CDN,添加SaeLayerCDN不用修改网站的核心程序。
  • 如果不想使用CDN,能很容易就能改回来,而且数据仍在自己网站的服务器上。
  • SaeLayerCDN架构超轻量,全部代码只有200余行,非常便于自己修改和定制。

安装和使用

  • 部署代码:可以手动部署(即创建应用、上传代码)或者在线安装(还没有通过审核o(︶︿︶)o)
  • 配置程序:如果是手动部署,则要先在SAE后台创建一个storage的domain。然后设置index.php,修改下面的四个常量:
    /**
     * 网站静态文件的根目录对应的URL地址
     * */
    define('STATIC_URL','http://www.baidu.com/');
    
    /**
     * SAE storage的domain
     * */
    define('DOMAIN','cdn');
    
    /**
     * 空请求时是否显示本文档
     * */
    define('WELCOME_DOC',TRUE);
    
    /**
     * 运行环境:development/testing/production
     * */
    define('ENVIRONMENT','production');
    
  • 使用CDN:将网站模板中静态文件的的根目录URL替换成你的SAE应用地址,如将http://blog.creatist.cn/logo.jpg换成http://mysqecdn.sinaapp.com/logo.jpg。对于网站程序的一个建议是,设置一个$cdn_base配置变量,然后静态文件的URL根据$cdn_base生成,以后修改CDN只要配置这个变量就可以了。
  • 最后,刷新你的网站。然后感受网站加载速度的飞跃。

原理

大致就是取静态内容的过程中增加一个SAE层:前端从SAE取静态文件,当该文件是第一次被访问时,SAE从源服务器上取文件并保存到自己的storage里,然后返回给前端;之后就直接从SAE取而不需要再访问源服务器了。这样的好处就是在源服务器端可以实现无痛切换,不用使用像又拍CDN之类的API进行专门的编程,用户资源仍保存在源服务器上,只要将静态资源的前缀改为SAE的网址就行了,当不想使用CDN时可以再改回来。

例如,源文件地址是http://www.creatist.cn/avatar/21223.jpg(或者相对地址/avatar/21223.jpg),前端使用CDN,访问地址改成http://cdnxxx.sinaapp.com/avatar/21223.jpg(这通常是非常容易修改的)。SAE首先检查/avatar/21223.jpg在storage中是否已存在,如果存在即以前已经被访问过的话就直接取出来;如果不存在就从http://www.creatist.cn/avatar/21223.jpg保存到storage,以后就直接从storage里面取了。

SAE层还能实现其他很多功能,例如设置浏览器缓存、防盗链等等。

其他

SaeLayerCDN还在完善中,项目的Github地址是:https://github.com/Slacken/cdn,欢迎fork和贡献代码。

我的博客是:http://blog.creatist.cn/