缓存服务学习

来源:互联网 发布:吴鉴鹰单片机百度云 编辑:程序博客网 时间:2024/06/05 19:33
三种高速缓存的作用以及实现方式
 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()