• 缓存常规使用方式分析


    概述

    缓存功能是大型网站设计时要考虑的一个很重要的部分。

    从分布上看,可以将缓存分为客户端缓存、服务端缓存和第三方缓存。

    客户端缓存

             访问一个网站时,浏览器会缓存静态资源,如图片等。以后再访问的时候,它会优先使用本地缓存的文件。只有服务器端的文件更新了,或是缓存中的文件过期了,才会再次从服务端下载这些内容。

    服务端缓存

             服务器端缓存从性质上可分为两种:静态文件缓存和动态缓存。

    静态文件缓存

    如 果静态页面较多,且很少改动,那么这种文件最适合静态缓存。IIS6.0将这部分内容直接放在Kernel的内存中,由Http.Sys直接管理,性能非 常高。用户的请求如果在缓存中,那么Http.Sys会直接将内容发送到Network Driver上。而之前版本,则需要先将内容从IIS的User Space复制到Kernel中,然后再发送到TCP/IP Stack上。Kernel Level Cache 几乎是现在高性能Web Server的一个必不可少的特性。

    另外,如果愿意,静态文件还可以压缩(动态文件也可以压缩,但费效比不是很高,因为每次都要压缩,不能 一劳永逸),压缩的东西放到一个IIS指定的一个地方。如果客户端Browser支持相应的解压缩,那么压缩的内容将发送回去,解压缩工作由客户端来完 成。Browser在向Web server发送请求的时候,HTTP Request Header里面有是否支持压缩的信息。

    动态缓存

    动态缓存的难点在于内容的过期校验和更新处理。

    应用程序数据缓存

    System.Web.Caching命名空间提供用于缓存服务器中常用数据的类。此命名空间包括Cache类,该类是一个字典,可以存储任意数据对象,如哈希表和数据集。

    它还为这些对象提供了失效功能,并提供了添加和移除这些对象的方法。

    你还可以添加依赖于其它文件或缓存项的对象,并在从Cache对象中移除对象时执行回调以通知应用程序。

    System.Web.Caching.CacheobjCache=HttpRuntime.Cache.

    objCache.Insert(strKey,objObject,null,absoluteExpiration,slidingExpiration)

    文件缓存依赖

    这种策略让缓存依赖于一个指定的文件,通过改变文件的更新日期来清除缓存。

    这种方式非常适合读取配置文件的缓存处理。

    在负载均衡的情况下,多个Web应用的缓存可依赖于同一个共享文件。

    System.Web.Caching.CacheDependency dep=newSystem.Web.Caching.CacheDependency("C:\test.txt");

    var objCache=HttpRuntime.Cache;

    objCache.Insert(cacheKey,objObject,dep,Cache.NoAbsoluteExpiration,Cache.NoSolidingExpiration,CacheItemPriority.Default,null)

    数据库缓存依赖

    这种策略让缓存依赖数据库,只有数据变化的时候才更新缓存。

    使用System.Web.Caching.SqlCacheDependency类,并进行相应的配置

    1.        配置站点Web.Config

    <system.web>

             <sqlCacheDependencyenabled="true" pollTime="6000">

                       <databases>

                                <addname="db1" connectionStringName="dbConnect1"/>

                       </databases>

             </sqlCacheDependency>

    </system.web>

    2.        在代码中配置数据库权限

    SqlCacheDependencyAdmin.EnableTableForNotifications("db1","P_ table1");

    3.        代码调用

             vardep=new SqlCacheDependency("db1","P_table1");

  • 相关阅读:
    Redis未授权访问写Webshell和公私钥认证获取root权限
    Zabbix 2.2系列注入+getsehll
    XSS中的同源策略和跨域问题
    权限维持-wmi事件
    burp插件之xssValidator
    MySQL模拟Oralce闪回操作
    误删除innodb ibdata数据文件
    pt-heartbeat使用实践
    MySQL slave状态之Seconds_Behind_Master【转】
    如何快速REPAIR TABLE
  • 原文地址:https://www.cnblogs.com/markhe/p/5588033.html
Copyright © 2020-2023  润新知