【问题标题】:Problematically Invalidate the IIS Output Cache有问题地使 IIS 输出缓存无效
【发布时间】:2023-04-09 06:54:01
【问题描述】:

我的内容通常是来自数据库的预渲染数据。所有页面加载一次并被缓存。如果数据库中的数据发生变化,缓存应该对某些页面失效。

有没有办法以编程方式重置 IIS 输出缓存,例如单击按钮?

【问题讨论】:

    标签: asp.net caching iis-7.5 outputcache


    【解决方案1】:

    输出缓存有一些参数可用于处理缓存对象VaryByParamVaryByControlVaryByCustom

    VaryByParam 根据请求的参数缓存对象,例如查询字符串值,如果是 POST / PostBack,则查询 POST / PostBack 值。

    VaryByControl 根据VaryByControl 属性中列出的控件的值缓存对象。

    VaryByCustom 是一种为缓存机制设置自定义逻辑的方法。这是一个关于它如何在您的场景中提供帮助的示例。

    您正在缓存的页面和控件中使用以下指令。注意VaryByParam="none" 的使用。

    <%@ OutputCache Duration="900" VaryByParam="none" VaryByCustom="somevariablename" %> 
    

    在您的Global.asax 文件中添加以下函数:

    public override string GetVaryByCustomString(HttpContext context, string arg)
    {
        if (arg == "somevariablename")
        {
            return GetCustomCacheIdentifier();
        }
        return base.GetVaryByCustomString(context, arg);
    }
    

    每当页面或控件具有OutputCache 指令时,都会触发此函数。当arg 参数设置为您在VaryByCustom 中设置的值时,您可以返回一些值。

    如果值相同,IIS 将返回页面的缓存版本,如果您返回一个新值,页面将再次呈现。

    例如,您可以返回一个最初设置为 0 的计数器,并在数据库发生更改时递增该计数器。

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 2018-01-23
      • 2018-01-02
      相关资源
      最近更新 更多