ASP.NET状态管理之六(缓存Cache)

ASP.NET 为您提供了一个强大的、便于使用的缓存机制,用于将需要大量服务器资源来创建的对象存储在内存中。缓存这些类型的资源会大大改进应用程序的性能。

缓存是由 Cache 类实现的;缓存实例是每个应用程序专用的。缓存生存期依赖于应用程序的生存期;重新启动应用程序后,将重新创建 Cache 对象。

设计 Cache 类是为了便于使用。您可以将项放置在 Cache 中,并在以后使用简单的键/值对来检索这些项。

Cache 类提供了强大的功能,允许您自定义如何缓存项以及将它们缓存多长时间。例如,当缺乏系统内存时,缓存会自动移除很少使用的或优先级较低的项以释放内存。该技术也称为清理,这是缓存确保过期数据不使用宝贵的服务器资源的方式之一。

当执行清理时,您可以指示 Cache 给予某些项比其他项更高的优先级。若要指示项的重要性,可以在使用 Add 或 Insert 方法添加项时指定一个 CacheItemPriority 枚举值。

当使用 Add 或 Insert 方法将项添加到缓存时,您还可以建立项的过期策略。您可以通过使用 DateTime 值指定项的确切过期时间(绝对过期时间),来定义项的生存期。也可以使用 TimeSpan 值指定一个弹性过期时间,弹性过期时间允许您根据项的上次访问时间来指定该项过期之前的运行时间。一旦项过期,便将它从缓存中移除。试图检索它的值的行为将返回 null(在 Visual Basic 中为 Nothing),除非该项被重新添加到缓存中。

对于存储在缓存中的易失项(例如那些定期进行数据刷新的项或那些只在一段时间内有效的项),通常设置一种过期策略:只要这些项的数据保持为最新的,就将它们保留在缓存中。例如,如果您正在编写一个应用程序,该应用程序通过另一个网站获取数据来跟踪体育比赛的比分,那么只要源网站上比赛的比分不更改,就可以缓存这些比分。在此情况下,您可以根据其他网站更新比分的频率来设置过期策略。您可以编写代码来确定缓存中是否是最新的比分。如果该比分不是最新的,则代码可以从源网站读取比分并缓存新值。

最后,ASP.NET 允许您根据外部文件、目录(文件依赖项)或另一个缓存项(键依赖项)来定义缓存项的有效性。如果具有关联依赖项的项发生更改,缓存项便会失效并从缓存中移除。您可以使用该技术在项的数据源更改时从缓存中移除这些项。例如,如果您编写一个处理 XML 文件中的财务数据的应用程序,则可以从该文件将数据插入缓存中并在此 XML 文件上保留一个依赖项。当该文件更新时,从缓存中移除该项,您的应用程序重新读取 XML 文件,然后将刷新后的数据放入缓存中。

将项添加到缓存中

可以使用 Cache 对象访问应用程序缓存中的项。可以使用 Cache 对象的 Insert 方法向应用程序缓存添加项。该方法向缓存添加项,并且通过几次重载,您可以用不同选项添加项,以设置依赖项、过期和移除通知。如果使用 Insert 方法向缓存添加项,并且已经存在与现有项同名的项,则缓存中的现有项将被替换。

还可以使用 Add 方法向缓存添加项。使用此方法,您可以设置与 Insert 方法相同的所有选项;然而,Add 方法将返回您添加到缓存中的对象。另外,如果使用 Add 方法,并且缓存中已经存在与现有项同名的项,则该方法不会替换该项,并且不会引发异常。

通过键和值直接设置项向缓存添加项

通过指定项的键和值,像将项添加到字典中一样将其添加到缓存中。

下面的代码示例将名为 CacheItem1 的项添加到 Cache 对象中:

Cache["CacheItem1"] = "Cached Item 1";

通过使用 Insert 方法将项添加到缓存中

调用 Insert 方法,传递要添加的项的键和值。

下面的代码示例添加名为 CacheItem2 的字符串:

Cache.Insert("CacheItem2", "Cached Item 2");

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索缓存
, 方法
, 应用程序
, cache
, 时间
, 绝对过期时间
, 数据库添加时间
, 过期
, 状态缓存
thinkphp_s方法缓存
,以便于您获取更多的相关知识。

时间: 2025-01-01 01:16:45

ASP.NET状态管理之六(缓存Cache)的相关文章

[Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)

原文:[Asp.Net]状态管理(Session.Application.Cache.Cookie .Viewstate.隐藏域 .查询字符串) Session:  1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间)可以在Global.aspx的Session_Start()事件处理程序中,可以初始化会话变量.在下面的实例中,名为mydata的会话状态被初始化为0:

ASP.NET状态管理之一(概括篇)

每次将网页发送到服务器时,都会创建网页类的一个新实例.在传统的Web编程中,这通常意味着在每一次往返行程中,与该页及该页上的控件相关联的所有信息都会丢失.例如,如果用户将信息输入到文本框,该信息将在从浏览器或客户端设备到服务器的往返行程中丢失. 状态管理是您对同一页或不同页的多个请求维护状态和页信息的过程.与所有基于 HTTP 的技术一样,Web 窗体页是无状态的,这意味着它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页或站点.此外,到服务器的每一往返过程都

ASP.NET状态管理之十三(总结)

状态管理是您对同一页或不同页的多个请求维护状态和页信息的过程.与所有基于 HTTP 的技术一样,Web 窗体页是无状态的,这意味着它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页或站点.此外,到服务器的每一往返过程都将销毁并重新创建页:因此,如果超出了单个页的生命周期,页信息将不存在. ASP.NET 提供多种方式来在服务器往返过程之间维护状态.对这些状态管理选项的选择主要取决于您的应用程序,并且应基于以下条件: 需要存储的信息量有多大? 客户端是接受持久性

ASP.NET状态管理之七(其他物理数据存放媒体)

ASP.NET状态存储还可以存放在数据库,XML文件,文本文件,注册表中等等,物理数据存放媒体 数据库 首推ADO.NET XML 管理XML文档和流主要由System.Xml命名空间中类执行 文件 相关类在System.IO命名空间中 注册表操作由System.Win32命名空间中2个类执行

ASP.Net状态管理

asp.net Asp.Net提供了四种状态类型:application,session,cookie,view. Application状态为应用程序提供了一个全局的状态.所有客户都可以使用该状态.从设计的角度来说,我们通常用Application来存储一些标准的数据.同时,我们在使用它时要注意避免性能的降低,存储的数据尽可能提供给客户只读的功能. 我们可以使用HttpApplication类的Application属性来访问Application状态,它返回一个HttpApplication

ASP.NET状态管理之九(会话Session)

ASP.NET 允许您使用会话状态保存每个活动的 Web 应用程序会话的值,会话状态是 HttpSessionState 类的一个实例. 会话状态与应用程序状态相似,不同的只是会话状态的范围限于当前的浏览器会话.如果有不同的用户在使用您的应用程序,则每个用户会话都将有一个不同的会话状态.此外,如果同一用户在退出后又返回到应用程序,第二个用户会话的会话状态也会与第一个不同. 会话状态采用键/值字典形式的结构来存储特定于会话的信息,这些信息需要在服务器往返行程之间及页请求之间进行维护. 可以使用会话

ASP.NET状态管理之八(应用程序Application)

ASP.NET 允许您使用应用程序状态来保存每个活动的 Web 应用程序的值,应用程序状态是 HttpApplicationState 类的一个实例. 应用程序状态是一种全局存储机制,可从 Web 应用程序中的所有页面访问.因此,应用程序状态可用于存储需要在服务器往返行程之间及页请求之间维护的信息. 应用程序状态存储在一个键/值字典中,在每次请求一个特定的 URL 期间就会创建这样一个字典.可以将特定于应用程序的信息添加到此结构以在页请求期间存储它. 一旦将应用程序特定的信息添加到应用程序状态中

ASP.NET状态管理之十二(控件状态ControlState)

如果您在编写控件,可以将控件的状态信息存储在 ViewState 字典中,该字典是一个 StateBag 对象.开发人员将通过 ControlState 属性检索控件状态.您为 ViewState 属性指定键和值,Page 对象将对请求之间的状态信息进行序列化.要在您的控件中执行自定义状态处理,可重写 LoadViewState 和 SaveViewState 方法.在页开发人员禁用视图状态时,存储在此字典中的所有状态信息都会丢失.为弥补这一缺陷,在 ASP.NET 2.0 版中,您可以将关键状

ASP.NET状态管理之十一(视图状态ViewState)

视图状态是 ASP.NET 页框架默认情况下用于保存往返过程之间的页和控件值的方法.当呈现页的 HTML 形式时,需要在回发过程中保留的页的当前状态和值将被序列化为 Base64 编码的字符串,并输出到视图状态的隐藏字段中. 视图状态是 ASP.NET 页中的储存库,可以存储需要在回发过程中保留的值.例如,您可以将信息存储在视图状态中,下次将页面发送到服务器时,将会在页加载事件过程中访问这些信息. 您可以使用页的 ViewState 属性(此属性公开一个字典对象)来访问视图状态信息.由于视图状态