C#

本文是通过网上&个人总结的

1. 介绍

OutputCache输出缓存是复制ASP.NET页面,保存在内存的机制。这种行为有助于提高性能,通过返回的缓存达到网页及时响应的目的,减少客户机器需要对页面的渲染。如果一个页面需要很多的时间来渲染,缓存可以显著提高性能。尽管如此,OutputCache也有很大的缺点,如果你的网站需要为用户穷自定义的页面或信息,你不能用到缓存页面来达到你的效果。但是OutputCache支持配置选项,避免了这个缺点,它的配置也是非常强大的。

2. 配置地方

1)OutputCache可以配置在webconfig,作为全局的配置。也可以配置在Controller、Action上。

webconfig配置:

<system.web>
    <caching>
        <outputCacheSettings>
            <outputCacheProfiles>
                 <add name="profile" duration="30" enabled="true" varyByParam="*"/>
            </outputCacheProfiles>
        </outputCacheSettings>
    </caching>
</system.web>

Controller、Action:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVCFilter.Controllers
{
    [OutputCache(Duration = 20, VaryByParam = "*")]
    public class DefaultController : Controller
    {
//[OutputCache(Duration = 20, VaryByParam = "*")]
        public ActionResult Index(string id)
        {
            return this.Json(DateTime.Now.ToString("T"),JsonRequestBehavior.AllowGet);
        }
     }
}

3.详细配置

<%@ OutputCache Duration="#ofseconds"
   Location="Any | Client | Downstream | Server | None | 
     ServerAndClient "
   Shared="True | False"
   VaryByControl="controlname"
   VaryByCustom="browser | customstring"
   VaryByHeader="headers"
   VaryByParam="parametername" 
   VaryByContentEncoding="encodings"
   CacheProfile="cache profile name | ''"
   NoStore="true | false"
   SqlDependency="database/table name pair | CommandNotification"
   ProviderName="Provider Name"  
%>
配置参数 说明
Duration 必填值。
代表页面缓存的秒数。设置这个属性,page或user control建立一个过期策略的HTTP响应对象,并会自动缓存page或user control的输出。
Location OutputCacheLocation 枚举的值,默认值为Any。
注意:不支持.aspx文件。
Shared user control分享到不同的页面。默认是false。
注意:不支持.aspx文件。
VaryByControl 一个以分号分隔的列表字符串用于不同用户控制的输出缓存。
VaryByCustom 如果值=broswer,则缓存的是浏览器不同的名称和版本信息。如果是自定义的字符串,你要重写GetVaryByCustomString方法。
VaryByHeader 基于指定的标头中的变动改变缓存条目。
一个以分号分隔的列表用于不同的HTTP头的输出缓存。当这个属性被设置为多个标题,输出缓存包含一个不同请求文档的版本、headers。
设置VaryByHeader属性是允许在所有HTTP 1.1中缓存,不只是ASP.NET。
此属性不支持user controls。
VaryByParam Request 中变量的名称,这些变量名应该产生单独的缓存条目。"none" 表示没有变动。"*" 可用于为每个不同的变量数组创建新的缓存条目。变量之间用 ";" 进行分隔。
VaryByContentEncoding 一个以分号分隔的列表字符串用于不同输出缓存。VaryByContentEncodings属性使用theAccept-Encoding头来确定缓存的响应是不同的内容编码服务。关于如何指定接受编码标头的更多信息,参见14.3节的超文本传输协议(HTTP / 1.1规范在W3C网站上。
CacheProfile 缓存设置的名称与该页面。这是一个可选属性,默认为空字符串(" ")。
NoStore 一个布尔值来决定是否要防止敏感信息的二级存储。
SqlDependency 一个字符串值,用来识别一组数据库和表名对一个页面或控制的输出缓存依赖。注意theSqlCacheDependency类监控表在输出缓存依赖于一个数据库,这样,当更新表中的物品,这些物品是使用基于轮询时从缓存中删除。当使用通知(Microsoft SQL Server 2005)CommandNotification价值,最终SqlDependency类用于注册查询通知与SQL Server 2005服务器。
ProviderName 一个字符串值,表明所使用的自定义输出缓存提供程序。有关更多信息,请参见这个话题和条目的备注部分可扩展与ASP.NET 4(VS 2010和。Scott Guthrie的博客上净4.0系列)
   

可以继续查看我的文章

C# - 缓存OutputCache(二)缓存详细介绍

可以关注本人的公众号,多年经验的原创文章共享给大家。

原文地址:https://www.cnblogs.com/alunchen/p/6255738.html