|
在Sina App Engine上架设图片CDN-it论坛
IMUNC 2012的新闻中心使用Linode日本的线路,网络ping不稳定,有时候能到800ms,由于参会代表很多,线路负载很大。于是考虑采用国内的CDN,由于IMUNC.com并没有备案,所以只能自己想办法了。
于是考虑了在SAE上架设一个分发点,自己写了个脚本,功能比较简单,仅支持静态内容缓存。脚本的原理便是利用SAE的Storage储存图片,在收到请求时判断图片是否已经存在了Storage中,如果不存在则跳转会主服务器下载图片,功能类似于CDN。
建立CDN首先要在SAE应用后台开启Storage,并且设置缓存过期时间。
在版本目录下建立index.php:- <?php
- define( 'DOMAIN', 'Storage域名'); //应用Storage的域名(储存域)
- define( 'CDNSITE', '应用名-域名.stor.sinaapp.com'); //访问此Storage的网址
- define( 'SITE', 'static.yoursite.com'); //主服务器
-
- $url = $_SERVER[ 'SCRIPT_URL' ];
-
- $s = new SaeStorage();
- if( $s->fileExists( DOMAIN, $url ) )
- {
- header( 'location: http://'. CDNSITE . $url);
- exit();
- }
-
- header( 'location: http://'. SITE . $url);
-
- $f = new SaeFetchurl();
- $content = $f->fetch( 'http://'. SITE . $url );
- if($f->errno() == 0)
- {
- $s->write( DOMAIN, $url, $content );
- }
- ?>
复制代码 部署完脚本后需要将AppConfig更改为如下内容以设置REWRITE- handle:
-
- - rewrite: if( !is_file() && !is_dir()) goto "index.php?%{QUERY_STRING}"
复制代码 访问这样架设的CDN时会额外增加一次跳转,但相比其之前的网速,新浪的速度在国内时很快的。
摘自:http://www.kaijia.me/2012/07/set-up-cdn-on-sinaapp/
|
|