淺析12306前端優化點


關於12306

中國鐵路客戶服務中心(12306.cn),相信大家都不陌生。作為一個超大型的類電商網站,具體業務不予置評,但從前端設計來看,卻有諸多的不足。

12306訂票首頁分析

12306首頁(https://kyfw.12306.cn/otn/)請求達到32個,累計文件大小近800k。

其中有一半是圖片資源,大小達到444kb。

12306首頁圖片資源

另外有6個css文件請求,特別的是有2次css請求完全指向同一個css文件。

12306首頁CSS請求

還有8個js請求

12306首頁JS請求

這就是首頁初次打開所需要的內容,當然還有兩個html頁面,就不計算了。可以看到,打開整個頁面文件大小達到800k,和taobao,jd之類的比起來,這個大小是很小的,但是為什么給用戶的體驗就是卡頓、加載中、加載中呢?

接下來,就從前端的角度來看下,有沒有可以優化的地方呢?

優化1、使用瀏覽器緩存

在頁面加載中,12306請求了如此多的資源,很多資源看起來,根本就是不太容易變化的,應在HTTP標頭中設置有效期,盡可能多的使用瀏覽器緩存。

優化2、圖片優化

數據傳輸時間,在訪問網站的過程中,是一個耗時比較大的過程,其中又以圖片傳輸為最,如果網站上有較多的圖片,那么就要想辦法減少體積,延遲加載等等。在12306的頁面上,logo(https://kyfw.12306.cn/otn/resources/images/logo.png ),icon(https://kyfw.12306.cn/otn/resources/images/logo.png )等等圖片都是可以優化的。

優化3、圖片組合為CSS貼圖

瀏覽器一般都有並發連接數限制,也就是同時請求的資源數量是有效的,前端優化點之一就是減少請求數量,那么12306中的諸多小圖片完全可以合並到一個大圖之中,采用貼圖定位的方式,降低請求數量。

優化4、暫緩JS解析

由於JS是阻塞加載的,一般來說,把js放在head中會影響頁面的渲染速度,很多時候,我們都推薦把js放在body結束標記之前。但12306偏偏沒有這么做,把大把的js放在head中。

優化5、使用css而不是圖片控制背景

這個似乎是大家都知道的常識,就算為了兼容老版本的瀏覽器,也可以考慮做優雅降級。但12306偏偏就大量使用背景圖。

優化6、CSS合並

同樣為了減少請求數,應該盡量將CSS壓縮合並。分析12306的站點css,發現部分合並了,部分沒有,而且有些css連壓縮都沒做,很難想象是怎么打算的。另外,外部控件的樣式(不會變的樣式)完全可以打包放到cdn上。

優化7、JS合並

JS同上,該打包就打包,不要搞一堆js出來,加載還慢。。

總結

搶票還是每年的一個老大難的問題。12306,你可以推說你的核心邏輯復雜,這個我接受。但你完全可以把前端的一些基本優化點做到吧。就算我買不到票,至少我搶票的時候心情不至於太差。。

以上,搶票之余作為一個偽前端的發泄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM