Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 除了ASP.NET MVC OutputCache之外,还有其他选择吗_Asp.net Mvc_Outputcache - Fatal编程技术网

Asp.net mvc 除了ASP.NET MVC OutputCache之外,还有其他选择吗

Asp.net mvc 除了ASP.NET MVC OutputCache之外,还有其他选择吗,asp.net-mvc,outputcache,Asp.net Mvc,Outputcache,我有一个带有IsDataModified()的公共静态/单例类,它受数据库、文件、用户类型、api等的更改影响,立即处理,只返回一个bool变量 输出数据的修改频率从一分钟到几个月变化极大,因此我不会使用滑动过期,而是让持续时间为MAX或无穷长 但我要找的是 列表项 浏览器请求 MVC筛选器,用于检查缓存是否丢失或IsDataModified() 更新缓存并返回 否则返回现有缓存 我尝试扩展OutputCache,将持续时间设置为非常大的数字,但一旦页面被缓存,过滤器就不会被触发 基本上,我不

我有一个带有IsDataModified()的公共静态/单例类,它受数据库、文件、用户类型、api等的更改影响,立即处理,只返回一个bool变量

输出数据的修改频率从一分钟到几个月变化极大,因此我不会使用滑动过期,而是让持续时间为MAX或无穷长

但我要找的是

  • 列表项
  • 浏览器请求
  • MVC筛选器,用于检查缓存是否丢失或IsDataModified()
  • 更新缓存并返回
  • 否则返回现有缓存
  • 我尝试扩展OutputCache,将持续时间设置为非常大的数字,但一旦页面被缓存,过滤器就不会被触发

    基本上,我不希望指定的持续时间成为决定缓存何时过期的因素,相反,IsDataModified()应该是决定因素

    我认为一种方法是创建一个简单的过滤器,并通过代码隐藏使用输出缓存或类似对象,但我找不到提供缓存viewresult的OutputCacheAttribute


    这可能吗?请提出建议。

    所以我已经实现了一个构建在Redis之上的解决方案(memcache要复杂得多)。我使用一个开源的Redis输出缓存提供程序,它基本上创建了一个与页面URL对应的键。每当其中一个页面的底层数据发生更改时,我都会从Redis中删除该值,在Redis中,键会处理一些模式。(我的数据排序有一个层次结构,因此当缓存是来自父级的更新数据时,我会删除更多项的缓存)


    在更新数据时使用类似的方法删除缓存的页面可能也适用于您。另一方面,我正在考虑尝试更改我的流程,这样我就有了一个后台服务,在数据更新时创建页面并替换缓存,这样第一个用户在页面首次从缓存中删除后不会有缓慢的响应。

    因此我实现了一个构建在Redis之上的解决方案(memcache要复杂得多)。我使用一个开源的Redis输出缓存提供程序,它基本上创建了一个与页面URL相对应的键。每当其中一个页面的基础数据发生更改时,我都会从Redis中删除该值,其中键处理一些模式。(我的数据排序有一个层次结构,因此当缓存是来自父级的更新数据时,我会删除更多项的缓存)


    在更新数据时,使用类似的方法删除缓存的页面可能也适用于您。另一方面,我正在考虑尝试更改我的流程,以便我有一个后台服务,在更新数据时创建页面并替换缓存,以便第一个用户在页面更新后不会有缓慢的响应首先从缓存中删除。

    非常明确地说,服务器端cachinglook进入memcachememcache很好,如果我能够将变量/非基本数据类型传递给FiltServer,那么尝试ObjectCache应该可以满足我的需要。具体地说,服务器端cachinglook进入memcachememcache很好,如果启用,尝试ObjectCache应该可以满足我的需要我能够将变量/非基本数据类型传递给过滤器