記一次公司產品「負」優化

ivothgle發表於2019-06-07

初來乍到新公司不久,啃了幾天文件,也翻了一下部分程式碼,就發現公司現有產品有點問題,是什麼問題呢?

這年頭還是用 Apache + PHP 5.4 我就不說什麼了,關鍵是所以靜態資源不在網站根目錄也就算了,竟然沒有配置別名什麼的,然後把所有請求重定向到 index.php ,然後 index.php 去代理讀取實際的靜態檔案路徑,併傳送給瀏覽器。

看我這個當時的我就

gQKPGddNmQ.jpg!large

什麼鬼嘛,靜態資源都不直接走 Apache ,反而要經過 PHP 二次處理,當 Apache 是病貓嗎!

搞事

按我這暴脾氣,受不了,要研究一下怎麼搞了嘛。很快我就想到了幾種方案

記一次公司產品「負」優化

方案一:用軟連結掛載實際目錄到網站跟目錄

然後我就挑了登入頁來測試,挑了一大一小兩個檔案來對比。連續請求 10 次然後取個平均值, 2.3 KB 的 login.html 速度約提升 50%,1.7 MB 的 bg.png 約提升 25%。

記一次公司產品「負」優化

方案二:使用別名

很快,就用 netstat 和 ps 找到了 Apache 使用的配置檔案,配置了 AliasMatch ,然後打算重啟一下 systemctl restart httpd 無服務,好吧,自定義安裝的,沒有就算了, 用 /.../apache/bin/apachectl graceful 吧,報 line 80 xxx/httpd 路徑不對,怎麼可以這麼坑我的呢!開啟 apachectl 一看,這破目錄確實不對,/.../apache/bin/httpd graceful 然後輸出一句 ServerName 有個錯誤,雖然好久不用 Apache ,怎麼可以這麼坑我呢,迷迷糊糊又弄了一會,發現這個錯誤並不影響重啟,此時已經下午了。

別我為什麼不用 Alias ...

再測一下

連續請求 10 次然後取個平均值, 2.3 KB 的 login.html 速度約提升 52%,1.7 MB 的 bg.png 約提升 28%。臥槽好像有點不科學。

記一次公司產品「負」優化

方案三:使用 Nginx 直接處理

2.3 KB 的 login.html 速度約提升 60%,1.7 MB 的 bg.png 約提升 35%,速度槓槓的

記一次公司產品「負」優化

前面兩種對專案影響比較低,改架構影響就挺大的了,改是不可能改的。

碰巧

專案經理小X找我瞭解一下對專案熟悉情況,balabala… 然後問我有什麼問題沒,我說,為什麼竟然資源要經過 index.php 二次處理,他說不清楚,這個遺留問題了。我就提了一下我這邊的發現和解決方案,然後叫我整理一下發給他看一下發給他。過了一會他叫我跟他過去一下架構師那邊,當時我就感覺。。。

記一次公司產品「負」優化

然而架構師看了說:還行,聽說 nginx 處理靜態資源確實比 Apache 好一些,但是要修改影響較大,之前也找實習生 去調查一下,他說兩個差不多,當時就沒管那麼多了(內心:這個實習生可靠?)。只不過呀這個是對單個資源統計,不太能體現對整個頁面提升了多少,要整個頁面提升才有意義呀,能不能統計一下對整個頁面載入的影響?

我:好的,回去我再測試一下。

記一次公司產品「負」優化

繼續

由於之前優化過,我就先測一下優化後的首頁吧,重新整理檢視 Network 的 Load:1.79s,2.01s,2.12s… 十次平均在2s,感覺還行吧。

此時他們在群了討論吃粵菜還是燒烤,導師費什麼的 200 一個新人,臥槽,還有繳費 200 一人?5 個新人就 1000 ,管不了那麼多了,取消優化繼續測一下吧。

取消了所有優化,重啟 Apache 重新整理。Load:1.55s。不對啊,這可能是偶然事件

記一次公司產品「負」優化

再重新整理,Load:1.76s

記一次公司產品「負」優化

我不信,再來 Load:1.60s

記一次公司產品「負」優化

不科學啊,重啟瀏覽器在來,刷了二十來次,尼瑪,平均 Load:1.5s,優化後是 -25%???難不成我還搞成負優化了?這讓我怎麼交代?

記一次公司產品「負」優化

還有一分鐘就6點了,簡直要哭了。算了,要不吃個飯回來再看吧,說不定 chrome 就開竅了呢

剛到二樓食堂,心情不是很好,看看菜也沒什麼胃口的,隨便吃點吧,點菜,付錢,剛剛端到餐桌坐下,一個電話過來,

小X:你在哪裡?

我:在食堂

小X:今晚聚餐呀,快回來,我們在 5 樓等你

我:。。。好的

內心:我 TM 這 5 塊錢的快餐怎麼辦?還沒開吃呢!先吃兩口吧,傻了吧,吃飽了怎麼吃 1000 塊的大餐!

然後我就端到了餐具回收處,剛才打菜的阿姨眼睜睜看我:這孩子傻了吧,剛打的菜還沒吃就扔了。對不起了,我也想過打包啊,可是打包也沒人吃。

剛爬樓梯到 4 樓,電話又響起

我:喂?

小X:額,那個我們下一樓了,在一樓等你吧,你也下來一樓吧

我:好的

內心一萬一個草泥馬奔騰而過啊

再次走樓梯下去。。。

記一次公司產品「負」優化

最後

怎麼說 PHP 二次處理不可能比 Apache 直接讀靜態資源的快啊,優化後是 -25% ???嚴重懷疑瀏覽器有問題!

記一次公司產品「負」優化

相關文章