ASP.NET缓存机制基础概念

ASP.NET缓存机制名词解释

作为一家“创意+整合+营销”的成都网站建设机构,我们在业内良好的客户口碑。创新互联提供从前期的网站品牌分析策划、网站设计、成都网站制作、做网站、创意表现、网页制作、系统开发以及后续网站营销运营等一系列服务,帮助企业打造创新的互联网品牌经营模式与有效的网络营销方法,创造更大的价值。

页输出缓存:保存页处理输出,下次重用所保存的输出

应用程序缓存:允许缓存所生成的数据,如DataSet

ASP.NET缓存机制概念㈠:页输出缓存

1、页输出缓存的几中形式

①<%@ OutputCache Duration="60" VaryByParam="None" Location="Any"%>

Location指定在哪个地方缓存,Any任何地方都缓存。

60秒以内看到的都是一样的了。

②还可在配置文件里写,然后在页面调用配置文件的缓存名称。

③用编程的方式:

Response.Canche.SetExpires(DateTime.Now.AddSeconds(3));

Response.Canche.SetCacheabiliy(HttpCacheability.Public);

Response.Canche.SetValidUntilExpires(true);

相当于:

Public => Any

Private => Client

NoCache => None

Server => Server

ServerAndPrivate =>ServerAndClient

2、使用文件依赖项缓存页输出

产生背景:有时候,可能需要在文件发生更改时从输出缓存中移除某一项。就是说文件改了以后缓存立即失效。

string filepath = Server.MapPath("TextFile1.txt");

Response.AddFileDependency(filepath);//添加缓存依赖项

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));

Response.Cache.SetCacheability(HttpCacheability.Public);

Response.Cache.SetValidUntiExpires(true);

3、缓存多个版本

①使用请求的浏览器对页的各个版本进行缓存

<%@OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser"%>

②使用参数对页的各个版本进行缓存

<%@OutputCache Duration="60" VaryByParam="City"%>

这个调试可以在url后加QueryString

如:...url?City=shanghai

程序里得到这个上海然后再做其他的操作,这个时候如果参数传的还是shanghai它就不会在走到程序里了。

4、动态更新缓存页的部分,有三种方法可以实现部分不缓存

①已声明方式使用Substitution控件

public static string GetCurrentDateTime(HttpContext context)

{

return DateTime.Now.ToString();

}

//方法签名必须和委托签名一致

②以编程的方式使用Substitution控件API

Response.WriteSubstitution(new HttpResponseSubstitutionCallback(GetCurrentDateTime))

③以隐式方式使用AdRotator控件

这个控件永远都是不缓存的

ASP.NET缓存机制概念㈡:SQL Server依赖的缓存,非常之有用

当表数据发生改变就清除缓存

1、为SQL Server启用缓存通知

aspnet_regsql.exe -S -U -P

-ed -d Northwind -et -t Employees

Server:服务器

Username:用户名

Password:密码

Northwind:数据库

Employees:表

2、为缓存功能配置网页

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

3、在Web.config文件中设置缓存配置

 

 

  

  

 

//这里的name要是数据库名称

ASP.NET中的数据缓存有许多种,一般来说大型的数据使用 Cache对象缓存,用户身份信息用Session对象缓存,小型数据用Cookie对象缓存在客户端。

其中 Cache和Session应该属于系统级的缓存,Cookie属于用户客户端的缓存

除此之外还有用户控件的缓存,我转载一篇文章来详细介绍用户控件的缓存

<%@ OutputCache Duration="60" VaryByParam="*" %>

如同其他页面指令一样,该指令应该出现在ASPX页面的顶部,即在任何输出之前。它支持五个属性(或参数),其中两个是必需的。

Duration 必需属性。页面应该被缓存的时间,以秒为单位。必须是正整数。

Location 指定应该对输出进行缓存的位置。如果要指定该参数,则必须是下列选项之:Any、Client、Downstream、None、Server或ServerAndClient。

VaryByParam 必需属性。Request中变量的名称,这些变量名应该产生单独的缓存条目。“none”表示没有变动。“*”可用于为每个不同的变量数组创建新的缓存条目。变量之间用“;”进行分隔。

VaryByHeader 基于指定的标头中的变动改变缓存条目。

VaryByCustom 允许在global.asax中指定自定义变动(例如,“Browser”)。

利用必需的Duration和VaryByParam选项的组合可以处理大多数情况。例如,如果您的产品目录允许用户基于categoryID和页变量查看目录页,您可以用参数值为“categoryID;page”的VaryByParam将产品目录缓存一段时间(如果产品不是随时都在改变,一小时还是可以接受的,因此,持续时间是3600秒)。这将为每个种类的每个目录页创建单独的缓存条目。每个条目从其***个请求算起将维持一个小时。

VaryByHeader 和VaryByCustom主要用于根据访问页面的客户端对页面的外观或内容进行自定义。同一个URL可能需要同时为浏览器和移动电话客户端呈现输出,因此,需要针对不同的客户端缓存不同的内容版本。或者,页面有可能已经针对IE进行了优化,针对Netscape或Opera则应取消这种优化功能。后一个例子非常普遍,我们将提供一个说明如何实现此目标的示例:

示例:VaryByCustom用于支持浏览器自定义

为了使每个浏览器都具有单独的缓存条目,VaryByCustom的值可以设置为“browser”。此功能已经内置在缓存模块中,并且将针对每个浏览器名称和主要版本插入单独的页面缓存版本。<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser"%>

示例:

<%@ OutputCache Duration="60" VaryByParam="*" %>

该示例将缓存用户控件60秒,并且将针对查询字符串的每个变动、针对此控件所在的每个页面创建单独的缓存条目。

<%@ OutputCache Duration="60" VaryByParam="none"

VaryByControl="CategoryDropDownList" %>

该示例将缓存用户控件60秒,并且将针对CategoryDrop

DownList控件的每个不同的值、针对此控件所在的每个页面创建单独的缓存条目。

<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser"

Shared="true" %>

***,该示例将缓存用户控件60秒,并且将针对每个浏览器名称和主要版本创建一个缓存条目。然后,每个浏览器的缓存条目将由引用此用户控件的所有页面共享(只要所有页面都用相同的ID引用该控件即可)。

下面的示例说明了如何设置页或用户控件进行输出缓存的持续时间。

<%@ OutputCache Duration="100" VaryByParam="none" %>

以上就介绍了一些ASP.NET缓存机制的基本概念。

【编辑推荐】

  1. 再谈ASP.NET缓存机制:开发效率与优化的平衡
  2. .NET分布式缓存之Memcached执行速度检测
  3. 如何避免ASP.NET缓存占用系统资源
  4. .NET缓存机制探讨与比对
  5. 概述ASP.NET缓存机制

标题名称:ASP.NET缓存机制基础概念
当前地址:http://www.shufengxianlan.com/qtweb/news36/406786.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联