ASP.NET 實現頁面緩存
頁面緩存的使用方法非常的簡單,只需要在aspx頁的頂部加一句聲明<%@ OutputCache Duration="60" VaryByParam="none" %>
這樣整個頁面的內容都會被緩存,頁面中的ASP.NET代碼、數據源在緩存期間都不會被運行,而是直接輸出緩存的頁面內容。
頁面緩存是針對所有這個頁面的訪問者。這樣1個訪問者和1萬個訪問者、一次訪問和100萬次訪問對數據庫的壓力是一樣的。
Duration="60" 的意思是指定緩存的時間為60秒,可根據情況自已設定,超過這個時間則緩存失效,再次生成以后會緩存60秒,如此類推。
VaryByParam="none" 的意思是設定無參數緩存(有參數的緩存下面會講到)
但是對於一些有參數的頁面,比如新聞內容頁來講(比如是針對於訪問每個新聞的內容頁路徑為http://test.com/ViewNews.aspx?id=1,服務器進行頁面緩存是無法自動讀取id這個參數的值),如果如上設置的話,則只會緩存?id=1的新聞頁面,因為?id=2、?id=3只是頁面的不同參數而已,為了能緩存各種不同的新聞頁面,可以設置VaryByParam="id",表示對於不同的id參數進行單獨緩存。如果有多個確定緩存參數,則將參數名用分號隔開即可,比如VaryByParam="id;number"。
如果想讓任何不同的查詢字符串都創建不同的緩存,則設置VaryByParam="*",一般情況下設置“*”就足夠了。
這兩個參數是必須的,不能缺省。另外還有一個重要的參數DiskCacheable="true|false" 意思是要不要把緩存放到硬盤上,如果設為false則緩存數據會放到內存中。
這里需要注意一下,如果頁面數據很小的話可以把緩存數據放到內存中,如果數據較大最好放到硬盤上,否則會占用大量內存影響服務器運行,如果數據緩存到硬盤上的話,記得要把Duration的值設的大一些如Duration="3600",如果設的太小,服務器會過於頻繁的在硬盤上寫數據反而會降低性能,如果在內存中緩存數據Duration""則不要設的太長,當然具體時間長短要大家自己多嘗試才知道。
MVC 實現頁面緩存
如需在 ASP.NET MVC 項目中實現頁面緩存,在 Web.config 配置以下節點即可:
<system.web> <caching> <outputCacheSettings> <outputCacheProfiles> <add name="PostCache" duration="3600" sqlDependency="PostCacheDependency:Posts" varyByParam="*" location="ServerAndClient"/> </outputCacheProfiles> </outputCacheSettings> </caching> </system.web>