标签归档:CDN

网站加载速度优化技巧

网站优化

网站速度的重要性不言而喻。如果不是墙的影响,土木坛子目前的加载速度异常快,我在英国加载本网站首页,可以实现500毫秒以内完成加载,半秒钟都不到。

这是如何做到的?采用了什么优化方案?简单来说,我的优化方案和技巧如下,供博客朋友提升网页速度参考使用。

简洁的主题界面

如你所见,土木坛子目前采用WordPress官方主题2012, 禁用了Google字体,除了Google Analytics统计代码,其它全部采用本域名下的资源,包括JS, 图片等静态资源——连Gravatar头像都缓存在本主机上。2012主题是自适应简洁主题,我的首页加载的数量不到10个,这样就能最大限度地减少加载请求等待时间,同时也减少主机服务器开销。

选择SSD硬盘主机

我目前使用的是英国主机QuickHostUK,SSD固态硬盘。固态硬盘存取速度比传统硬盘要快得多,这样可以大大减少访客等待的时间。可以预见,随着SSD硬盘价格不断下降,将来不采用SSD的服务器将被慢慢淘汰。而对网站速度有要求的应优先选择SSD硬盘。

使用缓存机制

本网站由WordPress程序搭建,本来是动态PHP程序按需生成页面。我使用了WP Super Cache插件缓存所有网页。插件在后台生成HTML页面缓存在主机上,避免访客每次访问都要动态生成HTML网页,同时也降低服务器的压力。访客访问网页时,主机就像一台硬盘一样直接给出需要的文件,同时该插件支持GZIP压缩,文件体积压缩后可以减少在网络传输中所需要的时间。

采用先进CDN

我采用了CloudFlare的CDN,它不是普通的CDN。它使用Anycast(任播)技术的DNS全球解析,最大速度减少DNS解析时间。同时CDN技术让访客从全球任何地方都能从最短物理距离的地方加载静态资源:图片,JS, CSS文件(JS文件会优化合并)。而且CloudFlare最近使用了HTTP/2协议,让浏览器不再受限于HTTP并发请求数量,即可以同时加载更多的请求。

总的来说,我使用的优化方案并不复杂,成本预算也不高,但让网站的加载速度得到了极大的优化效果,对主机服务器、访客双方都非常友好。在移动网络时代,性能和网速和PC有线环境有区别,因此网站更应该为访客提供快速的加载访问速度。

CDN升级成收费CloudFlare Pro套餐

Switzerland

从昨天开始,土木坛子启用CloudFlare的收费CDN服务Pro套餐,就当九周岁的一个礼物。

使用收费服务后,好处是可以使用收费的功能。移动设备优化,更快的DNS解析速度(英国只有8 ms)图片压缩加速,更勤快的缓存频率,共享IP的网站数量更少(以前免费账号下面同IP下面甚至有擦边球网站),HTTPS SSL证书支持更多浏览器型号——IE 7也支持了,大部分RSS订阅服务也恢复正常

应该说,CloudFlare的免费账号提供的功能其实已经够好。我只是觉得不付费,有点占人家便宜的感觉,因为我一直觉得“免费的东西经常是最贵的”,所以我之前在网站下面标注:感谢CloudFlare提供全球CDN加速。现在可以心安理得地去掉这行致谢了。交了保护费后,理论上服务总应该比免费好。

那之前为什么不加入收费套餐?原因是CloudFlare不太合理的收费制度,每个账号下面,第一个域名20美元一个月,第二个是5美元。于是,我忽悠中文博客界的土豪——赖博士加入,然后,我以第二个域名加入,那样就是5美元。

我本来就这么随便一说,没想到,他第二天就炫耀地跟我说,他三个网站都升级到收费的CloudFlare,并且还将我这个提议变成了商机,他说,谁想加入收费的CloudFlare,挂在他的账号下面,他收费10美元什么的,大家共赢……这精明的福建人,难怪成土豪,中文博客界的人生赢家。

结果,我就占了他便宜,也升级到CloudFlare收费的CDN,赖博士说:高大上。至少,在被ICDSoft踢出后,土木坛子也只能找CDN才能维持下去。

现在土木坛子在网站上每年的投入资金也不小,每个月20多美元的主机费,再加上域名、SSL证书费用,现在又用上收费的CDN。在我还有钱把它撑下去时,尽力撑下去。

赖博士说,为兴趣爱好花这点钱,比上红灯区嫖强多了,说得他好像干过那事似的……话糙理不糙,坚持写博客的男人都是好男人,那写博客的女人呢?至少能找到好男人吧。

CloudFlare CDN使用经验和技巧

Switzerland

以前用过国产的CDN(content delivery network, 内容分发网络),效果不佳,很长一段时间对CDN失去兴趣。后来用了Incapsula的CDN,也没有什么印象。最近用上CloudFlare的CDN,感觉还不错。和我同样用MT主机的佐仔最近也加入了CloudFlare的阵营,中文博客界VPS最高配置的赖博士更是把他中文英文网站都用上CloudFlare的CDN。

他们问我有哪些CloudFlare设置经验技巧?我觉得CloudFlare的设置很人性化,注册按提示操作很快就可以实现全部配置,简单到可以用默认的设置即可,不过,我还是有一些个人觉得比较好的配置:

  1. DNS选项:DNS Records里面将泛解析去掉(如果有的话),只留下CloudFlare“云朵”保护下的A解析和CName解析(我这里的解析速度快到只有11 ms),彻底隐藏网站的源IP,对防DDoS攻击有一点点好处。DNS分配的IP通常有2个,CloudFlare使用了Anycast和Nginx反向代理技术,实际上CDN加速时,会自动分配最近的数据中心https://tumutanzi.com/cdn-cgi/trace 可以查看浏览器联系的数据中心(colo值对应相应的数据中心)。
  2. Crypto选项:我启用了SSL (with SPDY) Strict(我的网站本身有SSL),意思是CloudFlare的服务器和我的主机之间的通信也需要SSL加密,然后我还启用了HTTP Strict Transport Security (HSTS),并开启里面的所有附加选项。
  3. Speed选项:Auto Minify里选择Gzip压缩CSS, JS和HTML三个选项,减少网页传输流量大小。Rocket Loader™,进一步合并优化JS代码异步加载,我选择Automatic。这个功能因人而异,需要自己测试,如果对网页加载有影响的话就不要启用,毕竟是BETA功能。
  4. Firewall选项:Security Level我使用了高级High。
  5. Caching选项:Browser Cache Expiration我选择了一年的有效期。
  6. ScrapeShield选项:Email Address Obfuscation启用,保护网页上出现的邮箱名不被机器人扫描。

总体来讲,我认为CloudFlare不仅仅是CDN,还有一些网页优化、安全防护的功能,并且都是免费用户就可以享用。用上CloudFlare后,我的源主机几乎看不到网站资源消耗,连流量都节省了60%以上,统计显示,最近7天来,总流量10.31 GB,缓存化的流量达6.72 GB,挡住了285个有害威胁(主要来自中国)。

发现了一个小伎俩,和我几乎相同软件和硬件配置的佐仔说,无论如何都配置不好CloudFlare的HTTPS SSL,总是出现502错误,我重新购买了SSL证书亲自试验了一下,发现重新注册一个CloudFlare账号就解决了问题,CloudFlare似乎对免费账号的SSL功能有所保留,也可能是BUG,百撕不得骑姐。

我对赖博士说,如果不考虑中国大陆的访问速度,我目前还找不到理由不用CloudFlare的CDN。当然,也可能正是这条理由,大部分中文网站不太可能拥抱CloudFlare的CDN。