• 缓存技术


    为什么要使用缓存

    缓存位置:缓存到客户端缓存到服务器端缓存到代理服务器

     

     缓存技术

    为ASPX页面添加OutPutCach指令

     

    OutputCache指令必须至少包含:Duration和VaryByParam两个参数.

    Duration:用于设置页面缓存的失效时间(以秒为单位)

    VaryByParam:根据客户端Post或Get方式发送的请求参数不同,缓存不同的页面结果.如果提交的参数包含多个,那么参数与参数之间用分号(;)隔开.

    注意:如果不需要根据任何条件来缓存页面,那么只需要将VaryByParam属性设置为none.

    下面的示例演示了如何根据不同的查询条件缓存不同的页面结果:


     

    页面局部缓存

    只缓存页面的一部分区域

    方案一:控件缓存

    此种情况适用于页面中部分区域很少或基本不会更新.具体做法就是:将这部分区域做成用户控件,在用户控件中添加缓存指令(OutputCache).

    方案二:缓存后替换

    方案二正好和方案一适用的情况相反.具体实现就是使用服务器控件:Substitution.

    该控件使用要点:

    1. 设置其MethodName属性(该属性的值为后台的一个C#方法名称).
    2. 该方法必须是静态方法
    3. 该方法必须返回一个string类型的结果(string的值就是界面上要显示的内容)
    4. 该方法包含一个类型为HttpContext的参数

    (通过HttpContext可以获取ResponseRequestServerSession)

    缓存业务数据与缓存依赖

    缓存业务数据是指将系统中频繁使用的业务数据缓存到内存中,以便在以后随时使用.(IIS重启可能会导致缓存的业务数据丢失).缓存中可以存储任何类型的数据(object).并且是以键值对的形式存储.

    缓存业务数据主要使用了Cache类,它提供了2个方法添加缓存

    Cache.Add(..., ..., ..., ...)

    Cache.Insert():提供了多种重载形式,可以供多种环境使用.

    通过设置缓存的相对过期时间和绝对过期时间,可以解决内存中缓存的数据越来越多的问题.

     

    如何解决数据源更新后, 缓存中的数据自动失效的问题?

    数据库缓存依赖

    当缓存的业务数据来源于数据库时,并且当数据库中相应的数据表记录发生改变(增修删)后,缓存的业务数据也将自动失效,并从缓存中被移除.

    实现数据库缓存以来有两种方法配置SQLServer:

    一 使用aspnet_regsql命令行工具,

    二 使用SqlCacheDependencyAdmin类(略)。

    例如:

    aspnet_regsql -S "server" -E -d "database" –ed  或者

    aspnet_regsql -S "server" -E -d "database" -et -t "table"

    如果是Sql验证的话要把-E换成,-U (用户名),-P (密码)

    以下是该工具的命令参数说明:

    -? 显示该工具的帮助功能;

    -S 后接的参数为数据库服务器的名称或者IP地址;

    -U 后接的参数为数据库的登陆用户名;

    -P 后接的参数为数据库的登陆密码;

    -E 使用当前登录用户的 Windows 集成认证进行身份验证。

    -d 后接参数为对哪一个数据库采用SqlCacheDependency功能;

    -C 连接数据库的连接字符串。如果您指定服务器(-S)和登录(-U和-P,或 -E)信息,则此选项不是必需的,因为连接字符串已经包含这些信息。

    -t 后接参数为对哪一个表采用SqlCacheDependency功能;

    -ed 允许对数据库使用SqlCacheDependency功能;

    -dd 禁止对数据库采用SqlCacheDependency功能;

    -et 允许对数据表采用SqlCacheDependency功能;

    -dt 禁止对数据表采用SqlCacheDependency功能;

    -lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能。

    使用aspnet_regsql工具的实现步骤:

    1. 打开命令行工具(vs2010命令行工具),并为相应的数据表启用SQL缓存依赖

    aspnet_regsql  -S  ip  -U  sa  -P  123456  -ed  -d  databaseName  -et  -t  表名

    aspnet_regsql  –S  ip  -E  -ed  -d  databaseName  -et  -t  表名

    1. 在应用程序中打开配置文件(Web.config|app.Config)

    在system.web节点下,添加caching子节点

     

    1. 在应用程序对缓存的数据使用数据库缓存依赖.

    主要使用到了SqlCacheDependency类.

     

    强调:如果缓存的业务数据来源于多张数据表,那么需要使用AggregateCacheDependency类.

     

  • 相关阅读:
    springboot2.X动态修改log4j2日志级别
    iframe嵌套PMM2.0
    grafana配置告警
    prometheus+grafana配置流程
    kubernetes拉取私有镜像仓库的镜像
    Windows Server 2016离线安装.NET Framework 3.5
    Office批量授权(VL)版本和激活方法
    华为USG防火墙配置NAT映射回流解决内网通过公网映射访问内部服务器
    IRF配置
    CENTOS7安装各种桌面系统 CENTOS安装桌面图形化GUI GNOME/KDE/Cinnamon/MATE/Xfce
  • 原文地址:https://www.cnblogs.com/kekeBoby/p/4019721.html
Copyright © 2020-2023  润新知