㈠ ASP.NET缓存常见的4种方式有哪些
1、分布式缓存Memcached
2、内存缓存,此占用服务器资源
3、XML缓存,这种最为常见
4、DATATABLE缓存
㈡ .NET中的缓存有几种
.NET中的缓存(仅供参考)
一.Output Caching (输出缓存)
当一个网页频繁被访问的时候,可以通过把整个网页缓存来提高执行效率。这样做的优点是,当用户再次访问这个网页的时候,被格式化好的HTML会被直接显示。
Output Caching 定制的两种方法:
1.基于底层的API技术
2.基于高层的@OutputCaching
一旦Output Caching 被定制过,那么这个网页就会在第一次被访问的时候生成cache,直到请求过期为止。
二.Page Fragment Caching (回调缓存)
作为Output的缓存的附加功能,还提供一种缓存技术,专门用于缓存用户控件或者网页中的一部分东西。可以指定没一部分或者某一个区域不被缓存。
在页面中,指定返回参数,来决定控件被缓存的部分。使用语句VaryBym语句指定控件更具参数来改变。
三.Data Caching (数据缓存)
ASP.NET提供了一种非常快捷的方法进行数据库缓存,用户可以非常方便的对页面变量进行缓存。并以此提高程序效率。
一个页面变量的缓存生命周期与应用程序的缓存生命周期相同。
同时对后台数据进行修改的时候,还需要对Cache进行相应的处理。
四.SQL Cache (配置连接池,提高数据缓存)
通过配置数据库连接池,只有当数据库数据被改变的时候,缓存才会改变。
五.Cache Configuration (配置缓存)
㈢ asp.net怎么设置浏览器客户端缓存
1. Expires:+过期时间
表示在指定时间后浏览器缓存失效,需要注意的是这儿的过期时间必须是HTTP格式的日期时间,其他的都会被解析成当前时间“之前”,缓存会马上过期,HTTP的日期时间必须是格林威治时间(GMT),而不是本地时间。举例:
㈣ asp.net aspx文件 缓存设定问题
1.概念
Cache-control用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了Pragma: no-cache)
数据包中的格式:
Cache-Control: cache-directive
cache-directive可以为以下:
request时用到:
| "no-cache"
| "no-store"
| "max-age" "=" delta-seconds
| "max-stale" [ "=" delta-seconds ]
| "min-fresh" "=" delta-seconds
| "no-transform"
| "only-if-cached"
| "cache-extension"
response时用到:
| "public"
| "private" [ "=" <"> field-name <"> ]
| "no-cache" [ "=" <"> field-name <"> ]
| "no-store"
| "no-transform"
| "must-revalidate"
| "proxy-revalidate"
| "max-age" "=" delta-seconds
| "s-maxage" "=" delta-seconds
| "cache-extension"
部分说明:
根据是否可缓存分为
Public 指示响应可被任何缓存区缓存。
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的
部分响应消息,此响应消息对于其他用户的请求无效。
no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换)
根据什么能被缓存
no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
根据缓存超时
max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以
接收超出超时期指定值之内的响应消息。
Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的
效果。但是如果同时存在,则被Cache-Control的max-age覆盖。
格式:
Expires = "Expires" ":" HTTP-date
例如
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式)
2.应用
通过HTTP的META设置expires和cache-control
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />
上述设置仅为举例,实际使用其一即可。这样写的话仅对该网页有效,对网页中的图片或其他请求无效,并不会做任何cache。
这样客户端的请求就多了,尽管只是检查Last-modified状态的东西,但是请求一多对浏览速度必定有影响。
如果要对文件添加cache可以通过apache的mod_expire模块,写法为
<IfMole mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 days"
</IfMole>
记得ExpiresActive设为On,我起先没设置On,似乎怎样YSlow都查不到缓存机制。这样添加的话就是默认所有的。
如果要针对个别MIME类型则可以:
ExpiresByType image/gif "access plus 5 hours 3 minutes"
见 Apache Mole mod_expires
另外,当点击浏览器上的刷新,客户端发送的请求中均是max-age=0,表示validate操作,发送请求到服务器
要求检查cache,再更新cache,一般得到的是304 Not Modified,表示没变动。
Response.CacheControl = "public";
Response.Expires = 60 * 12;
㈤ asp.net把数据放到缓存
首先,把从文件里读出来的数据放到缓存里,然后从缓存里读取这些数据,用下面两个函数。
实际可以这么做,每次需要违禁词的时候,都尝试从缓存里读取,如果读取的是NULL,从硬盘里读取后放到缓存,然后使用;如果不是NULL,直接使用.
设置缓存
public static void SetCache(string CacheKey, object objObject)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject);
}
读取缓存
public static object GetCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
㈥ asp.net如何将经常访问的数据库表放入缓存中
如果单是为减小数据库压力建议采用页片断缓存,即缓存页面中部分内容(与数据相关的)。
可以采用Cache类、Session对象和Application对象(后两者很常见,就不多说了)。
而Cache类是提供数据缓存的类,三者类似。
例如要经常读取数据库中一个的内容(销售记录等等)可将其存放一个dataset
首先从数据库读取并填充到一个名为DS的Dateset里(....这个不是楼主的问题就不讨论了)
直接Cache("ds")=DS,则实现了将DataSet“存”到Cache("ds")里。
调用则是
首先定义一个新的Dateset 如 DS1
DS1=Cache("ds")即可
㈦ asp.net cache如何使用
这要看你想怎么用。是否用到其复杂的特性。比如:依赖项过期;移除通知。
如果都不用到。完全可以像session一样使用
HttpRuntime.Cache["key"]=value;
objectvalue=HttpRuntime.Cache["key"];
如果你要用到cache的一些高级特性。需要参考msdn
下面我贴出cache的定义
//实现用于Web应用程序的缓存。无法继承此类。
publicsealedclassCache:IEnumerable
{
//用于Cache.Insert(...)方法调用中的absoluteExpiration参数中以指示项从不过期。
;
//用作Cache.Insert(...)或Cache.Add(...)
//方法调用中的slidingExpiration参数,以禁用可调过期。
;
//获取或设置指定键处的缓存项。
publicobjectthis[stringkey]{get;set;}
//将指定项添加到System.Web.Caching.Cache对象,该对象具有依赖项、过期和优先级策略
//以及一个委托(可用于在从Cache移除插入项时通知应用程序)。
publicobjectAdd(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration,
CacheItemPrioritypriority,);
//从System.Web.Caching.Cache对象检索指定项。
//key:要检索的缓存项的标识符。
//返回结果:检索到的缓存项,未找到该键时为null。
publicobjectGet(stringkey);
publicvoidInsert(stringkey,objectvalue);
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies);
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration);
//摘要:
//向System.Web.Caching.Cache对象中插入对象,后者具有依赖项、过期和优先级策略
//以及一个委托(可用于在从Cache移除插入项时通知应用程序)。
//
//参数:
//key:
//用于引用该对象的缓存键。
//
//value:
//要插入缓存中的对象。
//
//dependencies:
//该项的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,
//并从缓存中移除。如果没有依赖项,则此参数包含null。
//
//absoluteExpiration:
//所插入对象将过期并被从缓存中移除的时间。
//如果使用绝对过期,则slidingExpiration参数必须为Cache.NoSlidingExpiration。
//
//slidingExpiration:
//最后一次访问所插入对象时与该对象过期时之间的时间间隔。如果该值等效于20分钟,
//则对象在最后一次被访问20分钟之后将过期并被从缓存中移除。如果使用可调过期,则
//absoluteExpiration参数必须为System.Web.Caching.Cache.NoAbsoluteExpiration。
//
//priority:
//该对象相对于缓存中存储的其他项的成本,由System.Web.Caching.CacheItemPriority枚举表示。
//该值由缓存在退出对象时使用;具有较低成本的对象在具有较高成本的对象之前被从缓存移除。
//
//onRemoveCallback:
//在从缓存中移除对象时将调用的委托(如果提供)。
//当从缓存中删除应用程序的对象时,可使用它来通知应用程序。
//
//异常:
//System.ArgumentException:
//为要添加到Cache中的项设置absoluteExpiration和slidingExpiration参数。
//
//System.ArgumentNullException:
//key或value参数为null。
//
//System.ArgumentOutOfRangeException:
//将slidingExpiration参数设置为小于TimeSpan.Zero或大于一年的等效值。
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration,
CacheItemPrioritypriority,);
//从应用程序的System.Web.Caching.Cache对象移除指定项。
publicobjectRemove(stringkey);
//将对象与依赖项策略、到期策略和优先级策略
//以及可用来在从缓存中移除项【之前】通知应用程序的委托一起插入到Cache对象中。
//注意:此方法受以下版本支持:3.5SP1、3.0SP1、2.0SP1
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration,
);
}
㈧ asp.net 如何将DataTable中的数据保存在缓存中
直接用session["数据表"]存储,然后再另外的页面获得
㈨ 如何清除ASP.NET中的页面缓存
方法一:
在开发中有时并不希望页面被缓存,特别是弹出式窗体,可以使用一下方法处理,将页面设置为不缓存。
方法一:在页面文件的HEAD中添加
<HEAD>
<META
HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</HEAD>
方法二 :在后端代码中添加,建议放在 Page_Load 事件中
Page.Response.Buffer = false;
Page.Response.Cache.SetNoStore();
㈩ Asp.Net WEb中怎么清空缓存
我也想知道- -!!
如果要清空也页面输出缓存,可以通过增加几行代码实现
Response.Buffer = true;
Response.Expires = 0;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.AddHeader("pragma", "no-cache");
Response.AddHeader("cache-control", "private");
Response.CacheControl = "no-cache";
或者设置<%@ OutputCache %> //具体的设置搜索下吧..
如果是ajax请求的,可以在请求的地址后面加随机参数
如果是Cache里的缓存,刚看到几行代码
IDictionaryEnumerator cacheEnmu = HttpRuntime.Cache.GetEnumerator();
while (cacheEnmu.MoveNext())
{
HttpRuntime.Cache.Remove(cacheEnmu.Key.ToString());
}