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


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

胡說叔叔
TA貢獻1804條經(jīng)驗 獲得超8個贊
1M的帶寬其實只有128kb/s,如果需要加載的資源比較多,慢是當然的
首先訪問一個Controller然后把所有這些信息全部通過數(shù)據(jù)庫查出來
如果有信心可以試試并行這些查詢,更穩(wěn)妥的方式是ajax,把多個查詢分解成(部分)并行的多個請求
- 3 回答
- 0 關(guān)注
- 546 瀏覽
添加回答
舉報
0/150
提交
取消