2010-07-11 62 views
2

我們有一堆那得到真正的高流量網頁,因此我們已在web.config中如下:是否有可能通過asp.net mvc中的成員身份進行緩存?

<caching> 
    <outputCacheSettings> 
    <outputCacheProfiles> 
     <add name="defaultCache" duration="900" varyByParam="*" location="Any"/> 
    </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 

和必要的控制方法如下屬性:

[OutputCache(CacheProfile = "defaultCache")] 

這爲我們提供了很好的服務,因爲正常用戶和管理員角色的緩存頁面之間沒有交集。但是現在我們已經實現了一個CMS,其中如果用戶以管理員角色登錄,則將CMS的界面呈現爲大多數頁面。但是,我們發現當前的緩存策略現在不適合我們,因爲管理內容正在緩存並提供給普通用戶。

那麼,有沒有辦法按角色緩存?這甚至有可能在頁面的url保持不變但內容根據登錄角色而改變的情況下?通過向所有相關頁面添加類似「admin = true」的內容來改變網址會更好些,因此我們緩存配置文件中的varyByParam="*"屬性可以完成其工作?

謝謝。

回答

3
<add name="defaultCache" duration="900" varyByParam="*" varyByCustom="membership" location="Any"/> 

的Global.asax:

public override string GetVaryByCustomString(HttpContext context, string custom) 
{ 
    if (custom == "membership") 
    { 
     string membership = "";//Get membership. 
     return membership; 
    } 

    return string.Empty; 
} 
相關問題