gpt4 book ai didi

c# - 在这种情况下如何使用 outputcache?

转载 作者:行者123 更新时间:2023-11-30 18:43:38 24 4
gpt4 key购买 nike

在我的应用程序中,我会记住用户在 session 中选择的语言。问题是如果我使用输出缓存,那么更改语言功能将不起作用,因为当我根据 Session["lang"] 值从数据库中检索时它会缓存结果。

那么如果我有另一种方法来使用缓存功能呢?或者我怎样才能减少响应时间?

最佳答案

输出缓存基础结构的一部分是 VaryBy 机制,它是一种指示 ASP.NET 保持同一页面的并行缓存因某些数据片段(如查询字符串)而异的方法。在这种情况下,VaryByCustom 机制可能是最容易实现的。 Here's a short article with a good example.

一、缓存属性:

[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 将保留在该参数下执行的页面的缓存副本。

关于c# - 在这种情况下如何使用 outputcache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4161221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com