利用SAE实现博客图片的加速、备份

除了稳定性,访问速度一直是站长们选择主机时主要考量的标准之一,无论如何,国外比不上国内、单线比不上多线、单机比不上CDN,这都是不争的事实。前些天一个偶然的机会尝试用SAE(Sina App Engine)做了下加速、备份博客图片的测试,效果还算不错,在此简单分享下~

Traffic for Last 7 Days

缘起

事情还要从上个月底说起,因为写了几篇台湾自由行的游记,被一位不认识的同学转到了豆瓣小组上,于是原本平静的Blog迎来了一拨访问的高峰,平时每个月流量撑死才用到一半,这次在被豆瓣小组转载的第二天下午就超过了套餐额度。为了不影响访问,临时将图片域名切换到了备份主机上,因为美国主机速度不甚理想,所以也开始寻找可行的加速、备份方案。

鸿沟

多线也好,CDN也罢,若想将自己的域名放在国内加速,备案是一定免不了的。CDN厂商中,大到专业的ChinaCache、ChinaNetCenter,小到定位于中小企业的Webluker,无一不要求加速域名的“合法性”。虽然Webluker提供了对于小站来说绰绰有余的免费套餐,但备案一项要求就足以让我另谋他路了。

准备

无论如何,静态化内容的分离是一定要做的,WordPress默认将插件、主题、上传附件统统放在了/wp-content的目录下,这样默认访问时,这些元素也会使用和Blog同样的域名提供给客户端,起不到分流的作用。WordPress的CDN Linker lite插件提供了一个很好的思路,可以将/wp-content甚至/wp-includes目录下的文件统统映射到一个新的域名下(比如yourname.sinaapp.com),从而让客户端访问Blog时,直接从SAE的主机上获取内容——当然,前提是需要将这些文件上传到SAE对应的数据存储中。

由于我的Blog在搭建之初就没有使用WordPress内置的上传功能,而是直接启用了image.joys.name这个功能域名,所以joys.name的/wp-content/uploads目录下并无内容,因此流量不大,也就没有将/wp-content做新域名的映射,而是选择直接加速功能域名image.joys.name。

SAE的启用

SAE只是选择之一,事实上也并未用到SAE的PHP、MySQL等开发环境,而仅仅利用了其中的Storage(数据存储)功能。当然SAE本身还有一些服务配合的限制,比如单一存储域名容量为2GB、通过Web方式上传最大文件为10MB、存储域名峰值带宽不超过400MB/s等……不过由于是个人站点,目前看来这些限制是完全不影响使用的。

我申请的SAE存储域名为joystyle-image.stor.sinaapp.com,用来代替image.joys.name下的内容,所以要做的就是把原本image.joys.name的内容完整复制到joystyle-image.stor.sinaapp.com下。遗憾的是SAE提供的Web上传方式过于简陋,且不支持FTP方式的上传(官方SDK提供了大文件接口,但我并未测试),所以将各个目录逐一上传着实费了我不少的时间。

请求重定向

万事俱备,只欠东风。将joystyle-image.stor.sinaapp.com下的文件与原域名(image.joys.name)保持镜像后,就可以做请求的重定向了。因为Blog原本的域名并未备案,所以不能直接将域名指向SAE的服务器(同时SAE对于已备案域名的绑定也没有大规模开放),因此就只能借助.htaccess文件来实现HTTP 302的重定向了。


RewriteEngine on
RewriteRule ^(.*)$ http://joystyle-image.stor.sinaapp.com/$1 [R=302,L]

这样过后,当你访问诸如image.joys.name/2012-03/Traffic.for.Last.7.Days.png这样的文件时,就会被重定向至joystyle-image.stor.sinaapp.com/2012-03/Traffic.for.Last.7.Days.png,达到了分流、加速的作用。

Traffic for SAE

优劣

优:

  • 速度快:经测试,虽然SAE目前仅在北京联通和北京电信通有服务器,但相对国外主机,速度依然具有明显优势
  • 费用低:按照这几天SAE的资源消耗,每天大概要用掉50个云豆(¥1可购买100个云豆),这样算来一年的费用是¥180左右,与同级别国外虚拟主机相当。如果你是具有一定级别的开发者,SAE是可以免费赠送云豆的。
  • 劣:

  • 302跳转:由于加速的内容都会被重定向到SAE上,所以页面中有多少加速域名的请求,就会有多少次302跳转,数量不多还好,否则对客户端来说也是一份额外的开销。
  • 到此为止,博客图片的加速、备份就完成了,站长可以通过.htaccess文件的开关来控制是否启用SAE,相对比较灵活。我发现我的表达能力也大不如前,原本挺简单的一件事被我写出这么多废话……希望你看得懂,祝玩的开心~

    1. 偶尔用1024×768的电脑浏览你的blog,发现横向宽度超过了,莫非缺省支持宽屏 ❓

      • 是的,主题并非自适应宽度,正文部分宽度670px,加上两侧的Sidebar有1100px了……

    2. 好高深好复杂 💡

    1. 还没有引用