網站 首頁那點事兒(一)

          做了Jrkj這個項目後,確實收穫良多。由於項目1.0剛剛完結,還未正式上線,就不以該項目的實際面貌來爲大家展示了。但這絲毫不影響我們接下來的首頁技術分享~

          本篇文章我們以淘寶爲例,主要講首頁的實現機制及提速方式。

          首先,我們來看淘寶首頁:首頁 或 看下圖:

          


       我把頁面上能看到的主要部分劃分了四個區域:類別菜單、條件搜索區、圖片區和賬戶服務及其他功能區。

       這四個功能區,我們的jrkj項目也是都存在的,所以就以這個頁面爲例了。


       左側菜單類別區,我們的jrkj項目中展現的是講師領域,分爲一、二級,通過這兩級領域來查詢相應領域下的講師。

       我們主要用了Redis來做一級緩存,緩存了數據。就是第一次發起查詢時,先去緩存中找,緩存中沒有再去數據庫中查,並將結果加入緩存中。這樣就減少了直接查詢數據庫的機會,提高了訪問速度。

   

       關於圖片,我們先是用了Nginx做圖片服務器(阿里雲),後來發現首頁速度依然很慢,就增加了帶寬到5M。通過工具分析淘寶的圖片加載速度,快過我們幾十倍。發現是我們的圖片太大,就開始限制用戶的上傳大小,並進行了圖片壓縮處理,這樣達到的效果大概控制在了淘寶時間的5倍左右,後續還會繼續優化。

       關於後期的優化方向,一是要尋求更優的圖片服務器及服務器集羣,二是CDN和反向代理技術的應用。


       關於條件搜索,也有了一個比較成熟的解決方案。

       我們想實現模糊搜索,最開始學習的時候是使用LIKE,但這裏顯然不能用,一是效率太差,二是查詢精度太低。

       這裏就需要使用全文檢索框架來實現了:通過搭建zookeeper+solr集羣,來進行查詢提速和精度優化。


        關於賬戶服務區,還沒有進行優化,這裏可能出現的問題就是登陸壓力大。通常解決辦法是進行登陸限制,比如添加計算式或問題式的驗證碼,來進行層次化登陸;或者增加服務器,搭建集羣來進行分流。


        好了,上面介紹的都是看得見的內容,還有一些隱藏的提速手段:

        1、js和css文件壓縮,我們先是進行了壓縮,然後放到了Nginx服務器上,未來需要搭建一個文件服務器來進行管理。

        2、通過數據庫讀寫分離和分庫分表技術來實現數據讀寫加速;

        3、擴容緩存服務器,或搭建緩存集羣、利用Redis二級緩存技術進一步提升查詢速度;

        4、還有未實現的動靜分離技術,緩存靜態頁面還在研究中~


        小結:看起來簡簡單單的一個首頁,包含了這麼多技術和思想。在大牛企業中肯定還有我們所不知道的優化手段和技術,需要進一步探索和學習。

        要想在今後的互聯網世界中發展,我們必須一方面不斷探索技術,優化網絡和軟件服務,另一方面還要着眼於需求變化,提示服務質量,擴展服務類型,以始終爲人民服務的態度來對待世界和未來。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章