2013-08-02 78 views
1

我有一個Asp.Net webforms頁面。我在應用程序中的一個複雜頁面上的頁面上有8個查詢。 2個查詢可以被緩存,並且它們已經被緩存,但另外6個查詢需要擊中數據庫。頁面在2秒內沒有任何延遲地加載正常。然而,作爲最佳實踐和表現,我想知道我是否應該讓它們異步。問題是如果我使它們異步,每個查詢都必須使用不同的連接,因爲目前我在HttpContext.Current.Items中存儲連接對象,如果我在不同的線程上,這將不可用。寫同步查詢或異步

我應該使用Task api還是應該讓它們保持同步?請建議最佳做法。

回答

1

在我看來,最好的選擇是將這些查詢結合在一起。如果這是完全不可能的,至少在sql連接上運行它們。使用異步可能不會增加時間,直到您使用共享的SQL連接,但我認爲這是不可能的。

0

我相信這取決於你打電話給你的數據庫。可以創建一個簡單的數據庫處理類(靜態)來建立一個連接,然後執行的任何查詢都可以重用相同的連接對象。異步調用意味着你正在並行執行它們;這可以改善用戶體驗(更快的性能),但對數據庫的調用次數是相同的。如果您提供了有關如何在代碼中對數據庫執行查詢的更多詳細信息,也許我們可以更好地回答您的問題。

+0

更快的性能是所有我需要。對DB的單獨調用不是我的問題,並且由於連接池機制而不會妨礙性能。 – Jack

0

如果您想要優化數據庫訪問時間,然後嘗試實施Garath和mesterak建議的操作 - 這應該會提供額外的性能改進。

但是,我必須說,如果我的頁面在2s下加載,我不會在此區域進行任何優化。

夫婦的問題要問自己,你繼續工作在這之前:

  • 你怎麼知道它的數據庫調用,正在對網頁加載的影響最大?
  • 您是否看到了頁面跟蹤或只是假定它是影響最大的數據庫?
  • 你做了什麼來優化其他元素?

這裏有一些其他的建議,您可以嘗試:

  • 創建頁面的跟蹤和檢查結果。這是一個很好的tutorial
  • 使用PageSpeed檢查您的網頁,看看是否有任何優化,在其他領域
  • 查閱這些tutorials如何優化其他網頁元素