【问题标题】:Modify Output Cache Depending On Date Found in Database根据在数据库中找到的日期修改输出缓存
【发布时间】:2014-02-20 00:23:27
【问题描述】:

我知道我可以为 ASP.NET MVC 控制器操作创建自定义输出缓存属性。我想根据事件是否通过来更改输出缓存的持续时间。如果它已经过了当前日期,那么持续时间会更长。但是我需要检查数据库来执行此操作,但是我在控制器操作本身中进行了相同的调用。无论如何设置动作结果结束时的持续时间,因此它取决于在控制器动作中查询的事件的日期?我不想进行两次调用,一次在输出缓存属性和控制器操作中。

【问题讨论】:

    标签: c# asp.net asp.net-mvc caching outputcache


    【解决方案1】:

    您应该为此使用SqlCacheDependency 类,例如:

    查看:

    <%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
    

    WEB.CONFIG:

     <caching>
          <sqlCacheDependency enabled = "true" pollTime = "60000" >
            <databases>
              <add name="northwind" 
                connectionStringName="Northwind"
                pollTime="9000000"
                />
            </databases>
          </sqlCacheDependency>
        </caching>
    

    上面的示例显示了一个 ASP.NET Web.config 文件,它启用了对 SQL Server 数据库表的基于表的依赖关系。

    【讨论】:

    • 你能再解释一下吗,这可以与实体框架一起使用吗?
    • sql 依赖与 EF 无关。这与 SQL 服务器有关。对于 2005 年之前的服务器,ASP.net 轮询 SQL 服务器中的表以进行更改。当您进行更改时,您可能会使用触发器更新此表。对于 >= 2005,它使用 SQL Server 中的本机更改跟踪来告诉 asp.net 发生了更改。
    • @MikeFlynn 我希望 Simon Halsey 的评论对您有所帮助。
    • 我认为它也可以与多连接表一起使用。我想我需要阅读它。
    猜你喜欢
    • 2017-06-24
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2014-11-19
    • 2013-12-16
    相关资源
    最近更新 更多