知识大全 ASP.NET缓存介绍

Posted

篇首语:给人以星火者,必怀火炬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET缓存介绍相关的知识,希望对你有一定的参考价值。

ASP.NET缓存介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  

  ASP NET缓存

  

  介绍

  缓存是在内存存储数据的一项技术 也是ASP NET中提供的重要特性之一 例如你可以在复杂查询的时候缓存数据 这样后来的请求就不需要从数据库中取数据 而是直接从缓存中获取 通过使用缓存可以提高应用程序的性能

  主要有两种类型的缓存

  输出缓存Output caching

  数据缓存Data caching

   输出缓存(Output Caching)

  使用输出缓存 你可以缓存最后输出的HTML页面 当相同的页面再次请求的时候 ASP NET不会再执行页面的生命周期和相关代码而是直接使用缓存的页面 语法如下

复制代码代码如下: <%@ OutputCache Duration=” ” VaryByParam=”None” %>  Duration 属性设置页面将被缓存 妙 任何的用户请求都会被缓存 在缓冲的 秒内相同的请求都会直接使用缓存的页面 当缓存过期后ASP NET会再次执行页面代码并且为下一个 秒创建一个新的HTML缓存   复制代码代码如下: <%@ Page Language="C#" MasterPageFile="~/MasterPage master" AutoEventWireup="true" CodeFile="OutputCachingTest aspx cs" Inherits="OutputCachingTest" Title="Page" %>  <%@ OutputCache Duration=" " VaryByParam="None" %>  <asp:Content ID="Content " ContentPlaceHolderID="ContentPlaceHolder " runat="Server">  <div >Output Cache</div>  Date: <asp:Label ID="lblDate" runat="server" Text="" />  Time: <asp:Label ID="lblTime" runat="server" Text="" />  </asp:Content>  protected void Page_Load(object sender EventArgs e)    lblDate Text = DateTime Now ToShortDateString();  lblTime Text = DateTime Now ToLongTimeString();    在这个例子中页面将被缓存 秒   通过查询字符串缓存(Cache by Query String )  在实际应用中页面往往会根据一些参数动态的改变页面的内容 如果你的页面是通过查询字符串来获取信息的 你可以根据查询字符串很容易的缓存页面的不同拷贝 VarByParam=”None”指定ASP NET只存储缓存页面的一个拷贝 VarByParam=”*” 指定ASP NET根据不同的查询字符串存储不同的缓存页面   复制代码代码如下: <%@ OutputCache Duration=" " VaryByParam="*" %>  <div align=right>  <a href="OutputCachingTest aspx">No Query String</a> |  <a href="OutputCachingTest aspx?id= ">ID </a> |  <a href="OutputCachingTest aspx?id= ">ID </a> |  <a href="OutputCachingTest aspx?id= ">ID </a> |  <a href="OutputCachingTest aspx?id= &langid= ">ID </a>  </div>  上面的例子中 在查询字符串中传了不同的ID ASP NET为每一个ID都存储了单独的缓存页面 这种方式会有一些问题就是当查询字符串范围很广的时候   这个时候我们可以在VarByParam 属性中指定重要的查询字符串变量的名字 如下   复制代码代码如下: %@OutputCacheDuration=" "VaryByParam="id;langid"%  自定义缓存(Custom Caching)  你也可以创建自定义的程序来缓存页面 ASP NET提供了一种很便捷的方式来创建自定义缓存 使用VarByCustom属性指定自定义缓存类型的名字   你还要创建为缓存生成自定义字符串的方法 如下   复制代码代码如下: public override stringGetVaryByCustomString(HttpContext context stringcustom)    if(custom == "browser")    returncontext Request Browser Browser +  context Request Browser MajorVersion;    else    return base GetVaryByCustomString(context custom);      这个方法必须写在global asax文件中 ASP NET使用该方法返回的字符串来实现缓存 如果这个方法在不同的请求中返回相同的字符串 ASP NET就会使用缓存的页面 否则就会生成新的缓存版本   上面的例子中GetVaryByCustomString()方法根据浏览器的名字创建缓存字符串 ASP NET会根据不同的浏览器请求创建不同版本的缓存   控件缓存(Control Cache )  上面的缓存技术可以让你很容易的缓存整个页面 如果要缓存指定控件的内容 可以通过指定VaryByControl 属性来完成   复制代码代码如下: %@OutputCacheDuration=" "VaryByControl="MyControl_ "%  上面代码ASP NET将会缓存MyControl_ 控件 分钟 如果要根据一些属性值来缓存控件只需要将OutPutCache指令加入* ascx页面   复制代码代码如下: <%@Control Language="C#"AutoEventWireup="true"CodeFile="MyControl ascx cs"  Inherits="Controls_MyControl"%>  <%@OutputCacheDuration=" "VaryByControl="EmployeeID"%>  VaryByControl=”EmployeeID”告诉ASP NET根据控件中声明的EmployeeID属性来创建不同版本的缓存   在 ascx cs 文件加入EmplyeeID属性为ASP NET 缓存使用   在页面中增加控件并且设置 EmployeeID   复制代码代码如下: private int_employeeID;  public intEmployeeID    get return_employeeID;   set _employeeID = value;     protected voidPage_Load(objectsender EventArgs e)    lblDate Text = DateTime Now ToShortDateString();  lblTime Text = DateTime Now ToLongTimeString();  lblEmployeeID Text = EmployeeID ToString();    缓存配置文件(Cache Profile )  web config可以配置缓存相关的设置   复制代码代码如下: <system web>  <caching>  <outputCacheSettings>  <outputCacheProfiles>  <addname="ProductItemCacheProfile" duration=" "/>  </outputCacheProfiles>  </outputCacheSettings>  </caching>  </system web>  你可以通过设置 CacheProfile=”ProfileName” 属性 来使用上面的配置   复制代码代码如下: %@OutputCacheCacheProfile="ProductItemCacheProfile"VaryByParam="None"%  数据缓存(Data Caching)  ASP NET还提供了另一种灵活的缓存类型 数据缓存 你可以将一些耗费时间的条目加入到一个对象缓存集合中 以键值的方式存储   复制代码代码如下: Cache["Name"] = data;  我们可以通过使用Cache Insert()方法来设置缓存的过期 优先级 依赖项等   复制代码代码如下: date = DateTime Now;Cache Insert("Date " date null DateTime Now AddSeconds( ) TimeSpan Zero);  ASP NET允许你设置一个绝对过期时间或滑动过期时间 但不能同时使用   缓存依赖项Cache dependency  缓存依赖项使缓存依赖于其他资源 当依赖项更改时 缓存条目项将自动从缓存中移除 缓存依赖项可以是应用程序的 Cache 中的文件 目录或与其他对象的键 如果文件或目录更改 缓存就会过期   复制代码代码如下: date = DateTime Now;  string[] cacheKeys = "Date ";  CacheDependency cacheDepn = newCacheDependency(null cacheKeys);  Cache Insert("Date " date cacheDepn);  上面的例子“Date ”缓存对象依赖“Date ”缓存条目 当 “Date ” 对象过期后“Date ” 将会自动过期 CacheDependency(null cacheKeys)中的第一个参数为空是由于我们只监视缓存键的更改情况   回调函数和缓存优先级(Callback Method and Cache Priority)  ASP NET允许我们写一个回调函数 当缓存条目从缓存中移除的时候触发 还可以设置缓存条目的优先级   复制代码代码如下: protected void Page_Load(object sender EventArgs e)    DateTime? date = (DateTime?)Cache["Date "];  if (!date HasValue) // date == null    date = DateTime Now;  Cache Insert("Date " date null DateTime Now AddSeconds( ) TimeSpan Zero   CacheItemPriority Default new CacheItemRemovedCallback(CachedItemRemoveCallBack));    DateTime? date = (DateTime?)Cache["Date "];  if (!date HasValue) // date == null    date = DateTime Now;  Cache Insert("Date " date null DateTime Now AddSeconds( ) TimeSpan Zero   CacheItemPriority Default new CacheItemRemovedCallback(CachedItemRemoveCallBack));    // Set values in labels  lblDate Text = date Value ToShortDateString();  lblTime Text = date Value ToLongTimeString();  lblDate Text = date Value ToShortDateString();  lblTime Text = date Value ToLongTimeString();    private void CachedItemRemoveCallBack(string key object value CacheItemRemovedReason reason)    if (key == "Date " || key == "Date ")    Cache Remove("Date ");  Cache Remove("Date ");      例子中创建了“Date ” 和 “Date ”缓存 “Date ” 在 秒后过期“Date ”为 秒 但是由于我们注册了移除的回调函数 当“Date ” 或 “Date ”其中一个过期都会执行CachedItemRemoveCallBack 方法 在这个方法中移除了两个缓存条目 ASP NET还提供了处理缓存条目更新时的回调函数CacheItemUpdateCallback   原文 cha138/Article/program/net/201311/14318

相关参考

知识大全 ASP.NET缓存总结

ASP.NET缓存总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一缓存概念缓存的好处类型 

知识大全 ASP.NET缓存分析

ASP.NET缓存分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  说到ASPNET缓存那就是

知识大全 ASP.NET缓存简述

ASP.NET缓存简述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以前对缓存的认识比较零碎最

知识大全 ASP.NET 输出缓存的移除

ASP.NET输出缓存的移除  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET输出缓存

知识大全 ASP.NET2.0缓存技术

新手基础教程:ASP.NET2.0缓存技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASP

知识大全 ASP.NET缓存:方法分析和实践示例

ASP.NET缓存:方法分析和实践示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尽早缓存经

知识大全 ASP.NET缓存方法分析和实践示例

ASP.NET缓存方法分析和实践示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尽早缓存经常

知识大全 在asp.net 中实现维护数据缓存

在项目中我们经常会用到数据缓存也会在项目处理对缓存的维护但是有些时间我们需要人为的来维护这些缓存用下面的代码来实现   将缓存信息绑定到DataGrid上   privatevoidbindCache

知识大全 ASP.NET缓存初探 使用得当是关键

ASP.NET缓存初探使用得当是关键  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文中对ASP

知识大全 为 ASP.NET 创建缓存配置对象

为ASP.NET创建缓存配置对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介    如果