首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用页面OutputCache和VaryByCustom来考虑ASP.NET 2.0+中的多个标准?

如何使用页面OutputCache和VaryByCustom来考虑ASP.NET 2.0+中的多个标准?
EN

Stack Overflow用户
提问于 2011-05-24 13:46:58
回答 2查看 1.8K关注 0票数 0

我们有一个网站是多语言和有一些个性化后,用户登录(例如头显示不同的链接,用户的用户名等),但我们希望缓存特定的面向公众的网页,这是在用户登录之前的版本(例如,人们只是浏览网站)。

在VaryByCustom 2.0站点中使用ASP.NET时,是否有一种方法可以考虑到以下多个条件(是的,我们最终会升级,但不是现在),您将如何将一个页面连接起来以将多个条件传递到该方法中?

  1. 是名为Profile.Preferences.Language的自定义ASP.NET成员资格配置文件属性(我们将检查URL方案,并在VaryByCustom之前将Language属性设置为有效值)。用户浏览器querystrings/params

  • Any

这三种情况将使我们能够缓存频繁被攻击的公共页面,而不必计算事物/访问DB或其他缓存,以获得菜单项的来源等,因为这些页面很少发生更改。

任何帮助都将不胜感激。

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2011-05-24 21:24:31

对于2号和3号,您可以使用以下命令

代码语言:javascript
复制
<%@ OutputCache Duration="Whatever you want in seconds" VaryByParam="*" VaryByCustom="browser"%>

抱歉,第一次我帮不了你

票数 0
EN

Stack Overflow用户

发布于 2011-05-25 00:56:10

我建议在GetVaryByCustomString中重写Global.asax方法,以便根据上述三个条件创建自己的缓存键。

代码语言:javascript
复制
public override string GetVaryByCustomString(HttpContext context, string arg)
{
    const string KEY = "UserSpecific";
    if (arg == KEY) {
         //perform some logic to generate a unique key per querystring, brower and profile
         string cacheKey = context.Request.QueryString["someparam"] + ...
         return cacheKey;
     }

    return base.GetVaryByCustomString(context, arg);
}

并修改outputcache指令以利用这个新的缓存键生成逻辑。

代码语言:javascript
复制
<%@ OutputCache Duration="300" VaryByParam="none" VaryByCustom="UserSpecific" %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6111403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档