除了稳定性,访问速度一直是站长们选择主机时主要考量的标准之一,无论如何,国外比不上国内、单线比不上多线、单机比不上CDN,这都是不争的事实。前些天一个偶然的机会尝试用SAE(Sina App Engine)做了下加速、备份博客图片的测试,效果还算不错,在此简单分享下~
缘起
事情还要从上个月底说起,因为写了几篇台湾自由行的游记,被一位不认识的同学转到了豆瓣小组上,于是原本平静的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,达到了分流、加速的作用。
优劣
优:
劣:
到此为止,博客图片的加速、备份就完成了,站长可以通过.htaccess文件的开关来控制是否启用SAE,相对比较灵活。我发现我的表达能力也大不如前,原本挺简单的一件事被我写出这么多废话……希望你看得懂,祝玩的开心~
偶尔用1024×768的电脑浏览你的blog,发现横向宽度超过了,莫非缺省支持宽屏 :?:
是的,主题并非自适应宽度,正文部分宽度670px,加上两侧的Sidebar有1100px了……
好高深好复杂 :idea: