[英]How can I use outputcache at this situation?
在我的應用程序中,我將記住用戶在會話中的語言選擇。 問題是如果我使用輸出緩存,那么更改語言功能將不起作用,因為它根據Session [“lang”]值從數據庫檢索時緩存結果。
那么如果我有另一種方法來使用緩存功能呢? 或者我怎樣才能減少響應時間?
輸出緩存基礎結構的一部分是VaryBy機制,它是一種指示ASP.NET保持同一頁面的並行緩存由某些數據(如查詢字符串)改變的方式。 在這種情況下,VaryByCustom機制可能是最簡單的實現。 這是一篇簡短的文章,有一個很好的例子。
首先,緩存屬性:
[OutputCache(CacheProfile = "CachedPage")]
public ActionResult Index()
{
return View();
}
緩存配置文件:
<caching>
<outputcachesettings>
<outputcacheprofiles>
<add varybycustom="Language"
varybyparam="*"
duration="86400"
name="CachedPage" />
</outputcacheprofiles>
</outputcachesettings>
</caching>
最后,global.asax.cs中的自定義邏輯:
public override string GetVaryByCustomString(
HttpContext context,
string arg)
{
if (arg == "Language")
{
return Session["lang"].ToString();
}
else
{
return base.GetVaryByCustomString(context, arg);
}
}
現在,對於Session["lang"]
返回的每個可能的唯一值,ASP.NET將保留在該參數下執行的頁面的緩存副本。
將此值保存在cookie中,會話在GetVaryByCustomString中不可用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.