zoukankan      html  css  js  c++  java
  • 使用缓存键依赖项缓存页输出

            当将页添加到输出缓存后,在超过了您在到期策略中指定的时间量之后,该页将被移除。有些时候,您要在到期之前从输出缓存中移除某个页或页的版本。例如,如果页显示易失数据(例如股票价格或温度),如果在该页到期之前数据已被更新,则该页将显示不正确的信息。

            要解决该问题,ASP.NET 提供了 HttpResponse.AddCacheItemDependencyHttpResponse.AddCacheItemDependencies 方法,这些方法允许您缓存依赖于 Cache 对象(与该页所属的应用程序关联)中一项的页输出。

    注意   通过调用 HttpResponse.RemoveOutputCacheItem 方法,可以从输出缓存中显式移除任何页。可以从 global.asax 文件,从已创建的自定义 ASP.NET 服务器控件或从页中执行该操作,具体取决于应用程序的需要。

    AddCacheItemDependency 方法允许您在页和 Cache 中的单个项之间创建关系,而 AddCacheItemDependencies 方法允许您在页和 Cache 项的数组之间创建关系。当该页依赖的任何项更改或从应用程序 Cache 中移除时,都将使页输出无效并将其从输出缓存中移除。

    注意   不能从 Web 窗体用户控件使用这些方法。

    使缓存的页输出依赖于 Cache 项

    1. 以声明方式或编程方式指定缓存页输出的设置。有关更多信息,请参见设置页缓存的到期时间设置页的可缓存性缓存页的多个版本
    2. 在页的代码声明块或代码隐藏文件中,使用 Cache.Item 属性、Cache.Add 方法或 Cache.Insert 方法将项添加到 Web 应用程序的 Cache 对象中。
    3. 在页的代码声明块或代码隐藏文件中,使用 Response 对象语法调用 AddCacheItemDependencyAddCacheItemDependencies 方法,指定该页所依赖的缓存项。
      警告   若要使用这些方法,传递给它的参数必须是为 Cache.Item 属性、Cache.Add 方法或 Cache.Insert 方法中指定的缓存项所指定的缓存键。

    下面的示例假定应用程序包含一个温度组件。该组件使用 Cache.Insert 方法将温度放置在应用程序 Cache 中。

    [C#]
    Cache.Insert("Temperature.CurrentTemperature", currentTemperature);
    [Visual Basic]
    Cache.Insert("Temperature.CurrentTemperature", currentTemperature)

    之后,下面的页代码(在代码声明块或代码隐藏文件中)获取存储在 Cache 中的当前温度,将其转换为字符串,然后显示它。然后,它使其输出缓存版本依赖于 Temperature.CurrentTemperature 键。从这时起,当温度组件更新温度时,便在输出缓存中刷新页版本。当随后请求该页时,该页将被重新放置在输出缓存中。

    [C#]
    int temperature = (int) Cache.Get("Temperature.CurrentTemperature");
    LabelTemperature.Text = temperature.ToString();
    Response.AddCacheItemDependency("Temperature.CurrentTemperature");
    [Visual Basic]
    Dim temperature as Integer
    temperature = Cache.Get("Temperature.CurrentTemperature")
    LabelTemperature.Text = temperature.ToString()
    Response.AddCacheItemDependency("Temperature.CurrentTemperature")

  • 相关阅读:
    Android见招拆招十:Migrate Android Code
    Android转载三:(布局)ImageView中src与background的区别
    Android见招拆招九:字符编码问题导入项目报错
    Android见招拆招八:多次遇到的R.java编译问题
    Android学习笔记五:(布局)Layout_margin和Layout_padding的区别
    Android见招拆招七:Error parsing XML: no element
    Window10系统修改hosts文件的方法
    Foxmail:‘错误信息:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败’的解决办法
    Oracle 查询NULL字段/空字符串
    Python 安装第三方模块时 报Retrying(Retry(total=4, connect=None, read=None, redirect=None, status=None))...[WinError 10061]由于目标计算机积极拒绝,无法连接 错误
  • 原文地址:https://www.cnblogs.com/zsxfbj/p/144642.html
Copyright © 2011-2022 走看看