哪位知道web缓存技术有哪些?
提问者:露易丝616 | 浏览 次 | 提问时间:2016-11-27 | 回答数量:3
一.OutputCaching由于IIS的一些特性,默认情况下OutputCache是打开的,但是要对某些请求进行缓存,还需要开发者进行定制,而且默认情况下,Output Cach...
已有3条答案
youzhiqiang123
回答数:53565 | 被采纳数:4
2016-11-27 13:42:40
一.OutputCaching
由于IIS的一些特性,默认情况下OutputCache是打开的,但是要对某些请求进行缓存,还需要开发者进行定制,而且默认情况下,Output Cache会被缓存到硬盘上,我们可以通过修改DiskCacheable的属性来设置其是否缓存,还可以通过Web config里配置缓存文件的大小。
<% OutputCacheDuration="3600"VaryByParam="state"DiskCacheable="true"%>
一般用硬盘缓存是考虑到页面送显的数据比较大,相对内存缓存来说,它的容量大,但是访问速度慢点,如果把周期设太短,使用硬盘缓存的效率就不大好。对于Output Cache的定制,有两种方法,一种是基于底层的API技术,一种是基于高层的 OutputCaching:
1.基于高层的 OutputCaching
A.由参数改变缓存内容:有些时候我们需要根据用户的请求来生成页面,但是用户的请求只有有限的几种组合,这个时候就可以根据用户请求来生成几种缓存页面,来进行缓存。
<% OutputCache Duration="60"VaryByParam="state"%>
<asp:SqlDataSourceID="SqlDataSource1"runat="server">
<SelectParameters>
<asp:QueryStringParameter Name="state"QueryStringField="state"DefaultValue="CA"/>
</SelectParameters>
</asp:SqlDataSource>
B.回调缓存:可以针对每个请求在页面中插入动态的部分,以弥补单独使用静态缓存的不足:
动态的部分用Substitution控件,Substitution控件是一个容器
<asp:SubstitutionID="Substitution1"runat="server"MethodName=""/>
MethodName里面放入要调用的方法内容。
2.使用API定制缓存:
通过设置System.Web.HttpCachePolicy属性来进行配置
<% OutputCache Duration="60"VaryByParam="none"%>
就可以写成
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
二.FragmentCaching
作为Output的缓存的附加功能,还提供一种缓存技术,专门用于缓存用户控件。在用户控件中设置:
<% OutputCache Duration="60"VaryByParam="none"%>
但在引用用户控件的页面不设置缓存。这样的话,页面中除了用户控件是静态的,其他都是动态的。
缓存用户空间同样还可以使用控件作为参数来源。通过指定控件作为缓存控件的数据来源,可以达到缓存控件数据的目的,和上面一样。
三.DataCaching
Asp提供了一种非常快捷的方法进行数据库缓存,用户可以非常简单方便的对页面变量进行缓存。并以此提高程序效率。一个页面变量的缓存生命周期与应用程序的缓存生命周期相同
实现是把数据放在Cache中,如:
source=new DataView(ds);
Cache("MyCache")=source;
MyCache这个变量其实就是一个XML文件。
四.SQL Caching
通过配置数据库连接池,只有当数据库数据被改变的时候,缓存才会改变。
开个DOS窗口:
C:\\>dir aspnet_regsql.exe/s——这个文件是专门注册SQL连接池的,它对SQLSever 7.0以上都有专门的支持,我们通过写一些专门的语句来配置这个注册连接池,可以把连接池和本地的应用程序(Asp服务器,即IIS)做一个连接。连接池只能监视有限的几个库,不然连接池的负载太大。使用SQL Caching:
先注册,如:aspnet_regsql.exe-S".\\SQLExpress"-E-d"pubs"-ed
aspnet_regsql.exe-S".\\SQLExpress"-E-d"pubs"-et-t"authors"
其中:-S".\\SQLExpress"表示要使用的SQL Server实例为".\\SQLExpress"。-E表示使用当前windows凭证进行身份验证。-d"pubs"表示用于应用程序服务的数据库名称叫"pubs"。-ed表示为SQL缓存依赖项启用数据库。-et表示为SQL缓存依赖项启用表。-t"authors"表的名称为"authors"。
然后页面上:
<% OutputCacheDuration="99999999"VaryByParam="none"SqlDependency="Pubs.Authors"%>
就OK了。
Web内容可以缓存在客户端、代理服务器以及服务器端。研究表明,缓存技术可以显著地提高WWW性能,它可以带来以下好处:
(1)减少网络流量,从而减轻拥塞。
(2)降低客户访问延迟,其主要原因有:①缓存在代理服务器中的内容,客户可以直接从代理获取而不是从远程服务器获取,从而减小了传输延迟②没有被缓存的内容由于网络拥塞及服务器负载的减轻而可以较快地被客户获取。
(3)由于客户的部分请求内容可以从代理处获取,从而减轻了远程服务器负载。
(4)如果由于远程服务器故障或者网络故障造成远程服务器无法响应客户的请求,客户可以从代理中获取缓存的内容副本,使得WWW服务的鲁棒性得到了加强。
分为数据库端缓存,应用层缓存,前段缓存,以及客户端缓存,缓存就是用来避免频繁的到主存储器(一般来说可能是数据库,结构化的磁盘文件,远程网络接口,程序接口等等提供数据返回的)获取数据而建立的一个存取更快的临时存储器(缓存)
希望我的回答能够帮到你。