隨著訪問量的增大,我們發現在高峰時期 SegmentFault 的載入速度越來越慢,而且還時不時會出現 502 的問題。而優化載入速度是一個很龐大的系統工程,它不僅涉及到系統設計,前端改造還包括業務邏輯的優化等等。但是,有些問題是可以立馬解決的,而且可以帶來比較明顯的提升效果,因此我們這次的優化就集中在這些問題上了。
加機器
這是增加系統承載量最簡單粗暴的方法,當然這次也不能免俗。當然作為一個創業公司,我們對增加服務器一直是比較謹慎的,對現有服務器的性能也是一直壓榨壓榨再壓榨(手動微笑)。當然考慮到現有服務器在高峰期的負載已經逼近峰值,這加機器也是必不可少的了。
于是我們首先升級了 php 的版本(這可以帶來少量的性能提升),并且增加了服務器的數量。負載立馬下降,效果立竿見影。但是要加快載入,還需要一些其它的手段綜合使用。
剝離其它業務的訪問量
之前為了配置方便,我們的一些附屬服務的流量也是從同一個流量入口進入。這就導致了在高峰期的網絡擁擠。特別是廣告服務,因為一個頁面往往有好幾個廣告位置,這導致請求量被成倍放大。
在這次優化中,這些服務被挪到單獨的入口,并進行針對性的網絡優化。以前吃緊的帶寬,一下子富余了很多。負載均衡服務器的壓力也大大下降了
前端頁面的小優化
在用debug工具查看頁面的網絡請求時,我們發現廣告業務的請求是同步加載的,這就導致頁面的渲染會一頓一頓地進行,用戶體驗比較糟糕。于是我們修改了廣告載入的邏輯,讓它與頁面加載異步進行,這提高了感官上的頁面載入速度。
總結
載入速度優化是一個持續不斷的過程,我們也會把這項工作繼續進行下去。這些立竿見影的改進完成后,就是業務邏輯的優化,這些硬仗可能會持續很長時間。目前我們已經在對某些頁面做針對性的改進,比如大家能看到的新版文章頁。后續還有一大波新的頁面正在趕來的路上。