您的位置:首页 > 其它

缓存服务学习

2006-10-14 13:31 211 查看
三种高速缓存的作用以及实现方式
1.输出缓存,它缓存请求所生成的动态响应
<%@ OutputCache Duration="60" VaryByParam="none"%>
<%@ OutputCache Duration="60" VaryByParam="state" %>
应用程序若要更多地控制与缓存相关的 HTTP 标头,可使用 System.Web.HttpCachePolicy 类提供的功能。下面的示例显示等效于上例中使用的页指令的代码。
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);

2.片断缓存,它缓存请求所生成的响应的各部分
<%@ OutputCache Duration="120" VaryByParam="CategoryID;SelectedID"%>
除了支持 VaryByParam 属性外,片段缓存还支持 VaryByControl 属性。VaryByParam 属性基于使用 POST 或 GET 发送的名称/值对改变缓存结果,而 VaryByControl 属性则通过用户控件中的控件改变缓存片段。
<%@ OutputCache Duration="120" VaryByParam="none" VaryByControl="Category" %>
注意:与输出缓存页相似,即使不使用 VaryByParam,也要求显式使用它。
注意:如果尝试以编程方式从包含输出缓存控件的页操作该控件,则会导致错误。
3.数据缓存,它以编程方式缓存任意对象。为支持这种缓存,ASP.NET 提供了全功能的缓存引擎,使程序员能够轻松地在请求间保留数据。
Cache["mykey"] = myValue;
注意:文件依赖项是通过使用 Cache.Insert 并提供引用 XML 文件的 CacheDependency 对象添加的。
Cache.Insert("MyData", Source,new CacheDependency(Server.MapPath("authors.xml")));
下列代码设置绝对的缓存过期时间。
Cache.Insert("MyData", Source, null,DateTime.Now.AddHours(1), TimeSpan.Zero);

============================================================
Application vs. Cache Class Speed Tests
http://www.eggheadcafe.com/articles/20030405.asp

Caching Dependencies in ASP.NET: Part I
http://www.c-sharpcorner.com/Code/2002/April/cachingdependenciespartI.asp

ASP.NET 缓存:方法和最佳实践
http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/ASP.NETCaching-TechniquesandBestPractiCEs.mspx

http://aspalliance.com/articleViewer.aspx?aId=69

在ASP.NET 中实现单点登录(看下思路即可,个人主张不推荐这样用)
http://dotnet.aspx.cc/ShowDetail.aspx?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168

============================================================
问的最多的问题:在一个自定义的类中如何使用Cache?
解决办法:
1.使用HttpContext获取上下文中的CACHE
2.类里写函数传递System.Web.UI.Page参数
3.使用System.Web.HttpRuntime获取运行时的CACHE
例子:
在自定义的类中定义如下方法:
public string CacheString()
{
if(System.Web.HttpContext.Current.Cache["MyData"] == null)
{
System.Web.HttpContext.Current.Cache.Insert("MyData","hubinasm is strong");
}
return System.Web.HttpContext.Current.Cache["MyData"].ToString();
}

public string CacheString(System.Web.UI.Page p)
{
if(p.Cache["MyData"] == null)
{
string myName = "hubinasm";
p.Cache.Insert("MyData",myName);
}
return p.Cache["MyData"].ToString();
}
public string CacheString2()
{
if(System.Web.HttpRuntime.Cache["MyData2"] == null)
{
System.Web.HttpRuntime.Cache.Insert("MyData2","hubinasm is strong");
}
return System.Web.HttpRuntime.Cache["MyData2"].ToString();
}
则可以在*.aspx.cs文件中这样使用
你的自定义类实例.CacheString() 和 你的自定义类实例.CacheString(this) 和 你的自定义类实例.CacheString2()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: