安哥网络 发表于 2013-12-20 19:36:35

在Sina App Engine上架设图片CDN-it论坛

在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更改为如下内容以设置REWRITEhandle:

- rewrite: if( !is_file() && !is_dir()) goto "index.php?%{QUERY_STRING}"访问这样架设的CDN时会额外增加一次跳转,但相比其之前的网速,新浪的速度在国内时很快的。
摘自:http://www.kaijia.me/2012/07/set-up-cdn-on-sinaapp/



页: [1]
查看完整版本: 在Sina App Engine上架设图片CDN-it论坛