我已經閱讀了幾個不同的東西,這聽起來像輸出緩存不會緩存每個用戶的結果的不同副本。所以如果用戶A有3個菜單,用戶B只能訪問其中的1個,那麼緩存查看結果將顯示全部3個?asp.net mvc輸出緩存,我可以緩存一個結果,將不同的用戶不同?
我該如何緩存每個用戶的東西,使其不共享?
謝謝!
我已經閱讀了幾個不同的東西,這聽起來像輸出緩存不會緩存每個用戶的結果的不同副本。所以如果用戶A有3個菜單,用戶B只能訪問其中的1個,那麼緩存查看結果將顯示全部3個?asp.net mvc輸出緩存,我可以緩存一個結果,將不同的用戶不同?
我該如何緩存每個用戶的東西,使其不共享?
謝謝!
一個解決方案是傳遞一個帶有菜單數量的參數。然後將outputcache配置爲通過除此之外的所有參數進行緩存。
此外,您可以將輸出緩存配置爲僅緩存在客戶端上,而不是在服務器上緩存根據您的場景,它可能很有用。
您可以隨時在asp.net會話上緩存用戶特定的信息。
使用VaryByCustom是,重新定義的HttpApplication.GetVaryByCustomString:
public virtual string GetVaryByCustomString(
HttpContext context,
string custom
)
{
//Return a value unique per user
//Change depending on the authentication of your site (f.e. make use of Session)
return context.User.Identity.Name;
}
http://msdn.microsoft.com/en-us/library/system.web.httpapplication.getvarybycustomstring.aspx http://asp.net-tutorials.com/caching/more-output-cache/