在以前的webform的開發中,在頁面的頭部加上outputcache即可啟用頁面快取,而在mvc3中,使用了razor模板引擎的話,該如何使用頁面快取呢?
在mvc3中要如果要啟用頁面快取,在頁面對應的action前面加上乙個outputcache屬性即可。
我們建乙個demo來測試一下,在此demo中,在view的home目錄下的index.cshtml中讓頁面輸入當前的時間。
@doctype html
>
<
html
>
<
head
>
<
title
>
index
title
>
head
>
<
body
>
<
div>
<
h2>
h2>
div>
body
>
html
>
在controllers中新增對應的action,並加上outputcache屬性。
[handleerror]
public
class
homecontroller : controller}
重新整理頁面即可看到頁面做了乙個10秒的快取。當頁面中資料不是需要實時的呈現給使用者時,這樣的頁面快取可以減小實時地對資料處理和請求,當然這是針對整個頁面做的快取,快取的粒度還是比較粗的。
可以通過設定快取的location屬性,決定將快取放置在何處。
location可以設定的屬性如下:
· any
· client
· downstream
· server
· none
· serverandclient
location的預設值為any。一般推薦將使用者側的資訊儲存在client端,一些公用的資訊儲存在server端。
加上location應該像這樣。
[handleerror]
public
class
homecontroller : controller
varybyparam可以對快取設定快取依賴條件,如乙個產品詳細頁面,可能就是根據產品id進行快取頁面。
快取依賴應該設定成下面這樣。
在mvc3中對
輸出快取進行了改進,outputcache不需要手動指定varybyparam,會自動使用action的引數作為快取過期條件。(感謝」散客遊「提醒)
[handleerror]
public
class
homecontroller : controller
} 當我們需要對多個action進行統一的設定時,可以在web.config檔案中統一配置後進行應用即可。
在web.config中配置下caching節點
<
caching
>
<
outputcachesettings
>
<
outputcacheprofiles
>
<
add
name
="cache1hour"
duration
="3600"
varybyparam
="none"
/>
outputcacheprofiles
>
outputcachesettings
>
caching
>
那麼在action上使用該配置節點即可,這樣的方法對於統一管理配置資訊比較方便。
[handleerror]
public
class
homecontroller : controller
}
MVC3快取(二 頁面區域性快取
mvc3中,新增了乙個叫做partial page的東西,既可以對載入到當前頁面的另外的乙個view進行快取後輸出,當頁面動態輸出時,對需要快取的區域性進行快取處理。建立前端頁面 在對應的controller中新增對應的action public actionresult partialcache ...
MVC3快取之二 頁面快取中的區域性動態
mvc中有乙個post cache substitution的東西,可以對快取的內容進行替換。示例,我們在model層中定義乙個隨機返回新聞的方法。using system using system.collections.generic using system.web namespace pub...
MVC3快取之二 頁面快取中的區域性動態
mvc中有乙個post cache substitution的東西,可以對快取的內容進行替換。示例,我們在model層中定義乙個隨機返回新聞的方法。using system using system.collections.generic using system.web namespace pub...