2010-05-14 104 views
1

正如我在earlier question中提到的,我遇到了網站性能問題......有些SQL查詢正在查殺服務器。但是,正如這篇文章的標題所提到的,我查看了OutputCache頁面指令來提高網站的性能。ASP.NET @OutputCache指令「繼承」

雖然我遇到了一些關於這個指令的問題: 1-如果我有一個web用戶控件在一個頁面中聲明一個OuputCache指令,那麼這個指令也會「贏」? 2-關於持續時間的最佳實踐是什麼?我也喜歡有一個滑動窗口。

感謝您的幫助,請訪問:http://www.developerit.com

回答

1

在其中既沒有被高速緩存的請求時,兩者的頁面,並且控制將被創建,然後添加到輸出緩存。如果頁面被緩存,則不管它是否在緩存中,控件都不會被創建 - 它的標記包含在頁面的緩存副本中。如果頁面沒有被緩存並且控件是,控件的緩存標記將在頁面中使用。

+0

這就是我所做的,因爲這是唯一的感官 – 2010-07-26 16:17:33

0

這裏有輸出緩存的好文章:http://www.4guysfromrolla.com/articles/121306-1.aspx

一般來說,您似乎正在尋找Page和Fragment緩存。如果可以的話,你想要做的就是緩存頁面,因爲那樣會給你帶來最好的性能優勢。但是,如果頁面上的區域必須根據用戶動態更改,例如:您在頁面頂部說'Hi {username}',那麼您需要查看片段緩存。

片段緩存不如頁面緩存有效,因爲輸出必須從緩存信息和動態信息一起縫合,但通常還是比無緩存更好!

這是一種藝術,根據頁面的作用和數據庫的負載來調整緩存,但它可以使頁面加載許多Orders of Magnitude比非緩存更快。如果db查詢正在查殺網站,您可能還想查看它們的馴服和/或單獨緩存它們的輸出,以便您不必爲了相同的信息而保持點擊數據庫。

也理解用於緩存的'varyByParam'也是非常有用的 - 比如說你有3種語言的頁面,你可以通過使用varyByParam緩存每種語言的頁面,只要你的Url某種語言組件varyByParam可以啓動。

HTH, 蘭斯

+0

非常感謝蘭斯 – 2010-07-26 16:17:10