随着访问量的增大,我们发现在高峰时期 SegmentFault 的载入速度越来越慢,而且还时不时会出现 502 的问题。而优化载入速度是一个很庞大的系统工程,它不仅涉及到系统设计,前端改造还包括业务逻辑的优化等等。但是,有些问题是可以立马解决的,而且可以带来比较明显的提升效果,因此我们这次的优化就集中在这些问题上了。
加机器
这是增加系统承载量最简单粗暴的方法,当然这次也不能免俗。当然作为一个创业公司,我们对增加服务器一直是比较谨慎的,对现有服务器的性能也是一直压榨压榨再压榨(手动微笑)。当然考虑到现有服务器在高峰期的负载已经逼近峰值,这加机器也是必不可少的了。
于是我们首先升级了 PHP 的版本(这可以带来少量的性能提升),并且增加了服务器的数量。负载立马下降,效果立竿见影。但是要加快载入,还需要一些其它的手段综合使用。
剥离其它业务的访问量
之前为了配置方便,我们的一些附属服务的流量也是从同一个流量入口进入。这就导致了在高峰期的网络拥挤。特别是广告服务,因为一个页面往往有好几个广告位置,这导致请求量被成倍放大。
在这次优化中,这些服务被挪到单独的入口,并进行针对性的网络优化。以前吃紧的带宽,一下子富余了很多。负载均衡服务器的压力也大大下降了
前端页面的小优化
在用debug工具查看页面的网络请求时,我们发现广告业务的请求是同步加载的,这就导致页面的渲染会一顿一顿地进行,用户体验比较糟糕。于是我们修改了广告载入的逻辑,让它与页面加载异步进行,这提高了感官上的页面载入速度。
总结
载入速度优化是一个持续不断的过程,我们也会把这项工作继续进行下去。这些立竿见影的改进完成后,就是业务逻辑的优化,这些硬仗可能会持续很长时间。目前我们已经在对某些页面做针对性的改进,比如大家能看到的新版文章页。后续还有一大波新的页面正在赶来的路上。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。