ASP.NET缓存OutputCache和Response.Cache之C#后台设置

本文深入探讨了ASP.NET页面缓存的使用方法,包括缓存参数配置、存储位置选择以及不同场景下的应用实例。通过具体代码示例,详细解释了如何设置缓存时间、缓存参数和缓存存储位置,旨在提升网站性能和减轻数据库压力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ASPX页面缓存
页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam="none" %>
 这样整个页面的内容都会被缓存,页面中的ASP.NET代码、数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容。
 页面缓存是针对所有这个页面的访问者。这样1个访问者和1万个访问者、一次访问和100万次访问对数据库的压力是一样的。
二、outpuCache参数
Duration
:缓存时间,单位秒
VaryByParam:缓存参数,
  VaryByParam=none 无参数缓存,可用于首页;
  VaryByParam="*" 如果想让任何不同的查询字符串都创建不同的缓存,则设置VaryByParam="*",一般情况下设置“*”就足够了。
  VaryByParam="id" 因为?id=2、?id=3只是页面的不同参数而已,为了能让不同的新闻各种缓存,因此可以设置VaryByParam="id"
  DiskCacheable="true|false"  意思是要不要把缓存放到硬盘上

注意:Buffer = true;以下设置才会生效,页面默认就等于true

   三、以下是代码示例的@ OutputCache指令和等效的编程代码。

  • 若要将输出缓存存储指定的持续时间

    声明性方法:
    <%@ OutputCache Duration="60" VaryByParam="None" %>

    编程的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
    Response.Cache.SetCacheability(HttpCacheability.Public);
  • 在其中发出请求的浏览器客户端上存储输出缓存

    声明性方法:
    <%@ OutputCache Duration="60" Location="Client" VaryByParam="None" %>

    编程的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
    Response.Cache.SetCacheability(HttpCacheability.Private);
  • 在任何 HTTP 1.1 支持缓存的设备,包括代理服务器和发出请求的客户端上存储输出缓存

    声明性方法:
    <%@ OutputCache Duration="60" Location="Downstream" VaryByParam="None" %>

    编程的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetNoServerCaching();
  • 若要将输出缓存存储在 Web 服务器上

    声明性方法:
    <%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %>

    编程的方法:
    TimeSpan freshness = new TimeSpan(0,0,0,60); 
    DateTime now = DateTime.Now; 
    Response.Cache.SetExpires(now.Add(freshness)); 
    Response.Cache.SetMaxAge(freshness); 
    Response.Cache.SetCacheability(HttpCacheability.Server); 
    Response.Cache.SetValidUntilExpires(true);
  • 缓存到达时,使用一个不同的城市每个 HTTP 请求的输出:

    声明性方法:
    <%@ OutputCache duration="60" varybyparam="City" %>

    编程的方法:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.VaryByParams["City"] = true;

    更新缓存:HttpResponse.RemoveOutputCacheItem("/index.aspx");
    注意:地址必须是绝对虚拟路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值