• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【Asp.Net从零开始】:使用缓存来提高网站性能Caching(二)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

   1.使用Page.Cache对象  

//类似Session的键值使用方式
 protected void Page_Load(object sender, EventArgs e)
    {
        lb_Time.Text = "Hello world!";
      
    }
    protected void btn_submit_Click(object sender, EventArgs e)
    {
        Cache["greeting"] = "Hello Cache!";
        if (Cache["greeting"] != null)
        {
            lb_Time.Text = Cache["greeting"] as string;
        }
        else
            lb_Time.Text = "Hello world!";

        
    }

  2.向Cache中添加元素System.Web.Caching.Cache.Insert  

Cache.Insert(string, Object, CacheDependency, DateTime, TimeSpan)

public void Insert (
	string key,
	Object value,
	CacheDependency dependencies,
	DateTime absoluteExpiration,
	TimeSpan slidingExpiration
)
key

用于引用该对象的缓存键。

value

要插入缓存中的对象。

dependencies

所插入对象的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则此参数包含 空引用(在 Visual Basic 中为 Nothing)。

absoluteExpiration

所插入对象将过期并被从缓存中移除的时间。如果使用绝对过期,则 slidingExpiration 参数必须为 NoSlidingExpiration

slidingExpiration

最后一次访问所插入对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并被从缓存中移除。如果使用可调过期,则 absoluteExpiration 参数必须为 NoAbsoluteExpiration.

Cache.Insert("FileCache", File.ReadAllText("File.txt"), new Caching.CacheDependency(Server.MapPath("File.txt"),Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0,10,0));

  

  3.定义Cache的依赖项System.Web.Caching.Dependency  

A.构造函数

  名称 说明
CacheDependency() CacheDependency 类的新实例。
CacheDependency(String) CacheDependency 类的新实例,它监视文件或目录的更改情况。
CacheDependency(String[]) CacheDependency 类的新实例,它监视一组(到文件或目录的)路径的更改情况。
CacheDependency(String, DateTime) CacheDependency 类的新实例,它监视文件或目录的更改情况。
CacheDependency(String[], DateTime) CacheDependency 类的新实例,它监视一组(到文件或目录的)路径的更改情况并指定更改监视开始的时间。
CacheDependency(String[], String[]) CacheDependency 类的新实例,它监视一组(到文件或目录的)路径、缓存键的更改情况或同时监视二者的更改情况。
CacheDependency(String[], String[], DateTime) CacheDependency 类的新实例,它监视一组(到文件或目录的)路径、缓存键的更改情况或同时监视二者的更改情况。
CacheDependency(String[], String[], CacheDependency) CacheDependency 类的一个单独的实例。
CacheDependency(String[], String[], CacheDependency, DateTime) CacheDependency 类的另一个实例以及更改监视开始的时间。

B.属性

  名称 说明
HasChanged CacheDependency 对象是否已更改。
UtcLastModified 获取依赖项的上次更改时间。

 

添加多个依赖项,利用System.Web.Caching.AggregateCacheDependency

Caching.CacheDependency dep1 = 
            new Caching.CacheDependency(Server.MapPathw("file1.txt"));
        string[] keyDependencies2 = { "CacheItem1" };

Caching.CacheDependency dep2 = 
            new Caching.CacheDependency(null, keyDependencies2);
        
Caching.AggregateCacheDependency aggDep =
            new Caching.AggregateCacheDependency();
        aggDep.Add(dep1);
        aggDep.Add(dep2);
        
Cache.Insert("FileCache", File.ReadAllText(Server.MapPath("File.txt"), aggDep);

  4.设定抛弃重置缓存的绝对时间和相对时间(2者互斥)  

Cache.Insert("File","C);acheContents", null, DateTime.Now.AddMinutes(10), Cache.NoAbsoluteExpiration);
        
Cache.Insert("File","CacheContents", null, Cache.NoAbsoluteExpiration, new TimeSpan(0,10,0));

  

   二. Page Output Caching   

  1.在前台代码@Page下面添加  

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

<%@ OutputCache Duration="15" VaryByParam="search;category" %>

  2.需要以控件作为区分值时,需要获得Asp.Net为控件所生成的id:  

A.Create your web form and add the control you want to plan to vary by;

B.Run the page and view the page source code in your web browser, within the HTML source you will find the complex control id;

C.Copy this id to the VaryByParam property;

<%@ OutputCache Duration="15" VaryByParam="ct100$MainContent$ChoiceDropDownList" %>

  3.局部页面的Caching  

找到需要缓存的控件.ascx文件,然后再其中加入@ OutputCache 即可

  4.编程动态地为单个页面配置Caching,使用如下3个方法  

Response.Cache.SetExpires

Response.Cache.SetCacheablity

Response.Cache.SetValidUntilExpires

  5.使用 Substitution 来 更新缓存  

(不能使用在已经被outputcache标注过的控件上)

  A.使用 Response.WriteSubsititution 方法;

      B.使用Substitution控件

  通过对MethodName属性的设定,可以使特定的方法免于被缓存;

 protected void Page_Load(object sender, EventArgs e)
    {
        Substitution1.MethodName = "GetCurrentDateTime";
      
    }
    public static string GetCurrentDateTime()
    {
        return DateTime.Now.ToString();
    }

  6.检查(自定义)缓存页的有效性  

http://msdn.microsoft.com/zh-cn/library/a5e5hdyz(v=VS.80).aspx

 7.从Cache collections中提取项:

A.确定不指向null;

B.将其转化为正确的类型;

C.如果为null,从原始资源来获取

 

      

      


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net单一登录发布时间:2022-07-10
下一篇:
《ASP.NETMVC5框架揭秘》发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap