zoukankan      html  css  js  c++  java
  • 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(二)缓存详细介绍

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

  • 相关阅读:
    Thinkphp 模板中使用自定义函数的方法
    thinkphp 邮件发送
    str_replace使用
    SQL备份一张表的数据
    error: Allowed memory size
    LitJson使用
    implode,explode的使用
    ModelState.AddModelError使用
    HTTP 错误 404.2
    验证码显示不出来,在THINKPHP中的使用
  • 原文地址:https://www.cnblogs.com/alunchen/p/6255738.html
Copyright © 2011-2022 走看看