最近在作關於新浪微博受權的一些minisite,數據庫並不複雜,因此在數據打交道這塊採用了linqtosql,開發起來更快更簡單。。。可是隨着用戶訪問逐漸增多,用戶上傳的圖片也愈來愈多,由於首頁是一個顯示圖片牆的效果,客戶抱怨loading時間太長,跳出率比較高。so 除了前端要作一些優化以外,後臺返回的接口也有必定必要的查詢優化。好了,見代碼。前端
這是以前寫的(菜鳥都是這樣作,無鄙視菜鳥之意,我以前就是這麼寫) sql
List<tbl_WeChat> list = (from wc in lcdb.tbl_WeChat select wc).OrderByDescending(o => o.SendTime).ToList(); foreach (var item in list) { WallByWX wx = new WallByWX { Id = item.ID, AudioUrl = string.IsNullOrEmpty(item.ServerAudioUrl) ? item.AudioUrl : item.ServerAudioUrl, ImgUrl = item.ServerImgUrl, ScreenName = item.ScreenName, LinkCode = item.Code, Zan = item.ZanCount.HasValue ? item.ZanCount.Value : 0, IsFirst = item.IsFirst.HasValue ? item.IsFirst.Value : false }; walls.Add(wx); }
由於有微信和新浪2個用戶來源,全部有2個類型的查詢。數據庫
改進以後的寫法服務器
walls = (from wc in lcdb.tbl_WeChat select wc).OrderByDescending(o => o.SendTime).Select<tbl_WeChat, WallByWX>(e => new WallByWX() { Id = e.ID, AudioUrl = string.IsNullOrEmpty(e.ServerAudioUrl) ? e.AudioUrl : e.ServerAudioUrl, ImgUrl = e.ServerImgUrl, ScreenName = e.ScreenName, LinkCode = e.Code, Zan = e.ZanCount.HasValue ? e.ZanCount.Value : 0, IsFirst = e.IsFirst.HasValue ? e.IsFirst.Value : false }).ToList();
另外還有一個疑問,查詢出來的數據在服務器上響應1秒不到,但是經過網絡去訪問的時候,加載的時間至關長~這個何解,有什麼方法呢微信