做了一個個人博客的項目,首頁需要展示很多內容,有網站的基本信息,羅列最新的博客,個人介紹,最新評論,推薦文章,熱門文章,熱門文章標簽等。這些都需要查詢數據庫。我使用的是springmvc,當訪問首頁時,首先訪問一個Controller然后把所有這些信息全部通過數據庫查出來,然后放到model里再展示出來,但是感覺這樣做的效率太低,展示一個首頁需要訪問接近10次數據庫。用騰訊云1M帶寬的服務器,訪問首頁需要等待5s才能顯示完所有信息,實在是太慢了,請問一般這種首頁是怎么實現的?是怎么去訪問數據庫的呢?如何去優化?
2 回答

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
建議先在本機測試一下訪問速度,以明確問題:
1、如果瓶頸在數據庫訪問多,那么和1M帶寬就沒什么關系??梢钥紤]采用ajax的方式,先加載主要的內容,其他內容異步加載。
2、如果是返回數據庫多,造成網絡傳輸慢,才和帶寬有關系,這時候一般是做分頁查詢降低數據量,另外就是服務器上啟動gzip壓縮,會大大降低網絡傳輸量。
理論上一個業務動作中,訪問10次數據庫不算什么,如果少量數據的查詢,單次數據庫的查詢處理時間一般在幾十毫秒,整體算下來總時間應該在1秒以內。
還有一個思路就是靜態化處理,因為博客類的站點內變更不頻繁,在內容發布的時候可以生成靜態頁面,用戶訪問的時候只顯示生成好的靜態問題,這樣速度回快很多。

料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
有兩個方法:
1.二級緩存,在服務器啟動的時候,把這些數據都加載到緩存當中,就不用每次向數據庫發請求了;
2.在頁面使用ajax異步加載,使用異步并發獲取服務器數據.
這應該是最簡單的兩種實現方式了,如果沒有的話可以試一下,也可以兩種同時使用.
添加回答
舉報
0/150
提交
取消