2009-04-11 57 views
1

我建立了一個在線新聞門戶,在此之前對我來說工作正常,但有人說主頁速度有點慢。當我想到它時,我看到了這個原因。數據訪問ASP.NET

該網站的主頁顯示

  1. 標題
  2. 現場新聞(子標題
  3. 斑點圖片
  4. 大多數閱讀新聞(如標題)
  5. 最多評論的新聞(作爲標題)
  6. 每個新聞類別的5個新聞標題(共11個,例如體育,經濟,地方,健康 等)

現在,它們中的每一個都是對db的單獨查詢。我有tableadapters數據集和數據表(標準數據訪問方案),所以對於標題,我稱之爲新聞類中的業務邏輯,通過tableadapter返回數據表。從那裏開始,我要麼通過將它綁定到控件或者(大部分時間)將對象轉換爲(新聞)列表來使用數據表,並且從那裏消耗它。

雖然這樣做對於上述每個似乎很好。至少它不會承受巨大的負擔。但讓我懷疑是否有更好的方法。

例如,我上面描述的項目是一個高度動態的網站,當他們從機構24小時不間斷地到達時插入新聞。所以在這種情況下緩存可能聽起來不太好。但另一方面,我知道還有一個當地報紙的類似項目。該網站只會每天更新一次。在這種情況下: 我只能運行一個查詢,它會返回一個包含今天插入的所有新聞項目的數據表,然後查詢該數據表並將標題,點和其他項目放置到站點上它們各自的位置?還是有更好的選擇?我只是徘徊其他人如何以最有效的方式執行類似的任務。

回答

2

我想你應該使用FireBug來找出需要花費時間加載的元素。有時候大的圖像可能會破壞節目(並且屏幕上圖像的大小並不總是與其下載大小有關)。

其次,您可以下載Yahoo Firefox插件YSlow並調查是否有任何放緩的腳本。

但Firebug應該給你最好的評論。加載Firebug後,點擊'Net'標籤查看頁面中每個元素的加載時間。

+0

+1使用Firebug和YSlow進行客戶端分析。 – Anthony 2009-04-11 07:41:29

2

如果你的表現不佳,你的第一步就是不要開始瞎搞。 配置您的代碼。準確找出緩慢的原因。傳輸頁面,渲染頁面或實際動態生成頁面是否放緩?單個查詢耗時過長嗎?

準確找出瓶頸在哪裏並在其核心攻擊問題。

即使在內容更新速度相當快的情況下,緩存也是一個非常好的主意。只要你的緩存機制是智能的,你仍然可以節省很多時間。如果是新聞門戶或博客而不是論壇,那麼使用緩存系統可能會大大提高性能。

1

如果您發現您的延遲來自數據庫,請檢查您的表格,確保它們已正確編制索引,羣集或您需要的任何其他數據,具體取決於表格中的數據量。另外,如果您使用動態查詢,請嘗試使用存儲過程。

如果您想要在一個數據庫請求中完成多個查詢,您可以。由於最初你不會顯示任何數據,直到所有查詢完成,並且禁止任何其他問題,您至少可以節省每次查詢訪問數據庫的時間。數據集包含表的集合,它們可以由同一個請求中的多個查詢生成。

ASP.NET爲您提供了一個非常好的緩存機制(HttpContext.Cache),您可以環繞它並使其更易於使用。既然你可以設置你的緩存對象的生命週期,你不必擔心文章和標題不是最新的。

如果您在本網站上使用WebForms,請禁用ViewState以獲取並不真正需要它們的控件,只是爲了加快頁面的加載速度。更不用說大量的其他調整和更改,使頁面加載速度更快(gzipping,最小化腳本等)

仍然,在做任何這之前,做Anthony suggested和配置文件您的代碼。找出真正的問題。