有时候总听到网友说网站运行好慢,不知如何是好;有时候也总见到一些朋友写的网站功能看起来非常好,但访问性能却极其的差。没有“勤俭节约”的意识,势必会造成“铺张浪费”。如何应对这种情况,充分利用系统缓存则是首要之道。

系统缓存有什么好处呢?举个简单的例子,你想通过网页查询某些数据,而这些数据并非实时变化,或者变化的时间是有期限的。例如查询一些历史数据。那么每个用户每次查的数据都是一样的。如果不设置缓存,ASP.NET也会根据每个用户的请求重复查询n次,这就增加了不必要的开销。所以,可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大大提供应用程序的性能。毕竟现在内存非常便宜,用空间换取时间效率应该是非常划算的。尤其是对耗时比较长的、需要建立网络链接的数据库查询操作等。

缓存功能是大型网站设计一个很重要的部分。由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能。

系统缓存全解析文章索引

  • 系统缓存全解析1:系统缓存的概述
  • 系统缓存全解析2:页面输出缓存
  • 系统缓存全解析3:页面局部缓存
  • 系统缓存全解析4:应用程序数据缓存
  • 系统缓存全解析5:文件缓存依赖
  • 系统缓存全解析6:数据库缓存依赖
  • 系统缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman

15.4.1      缓存的分类

从分布上来看,我们可以概括为客户端缓存和服务器端缓存。如图15-1所示:

<shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path extrusionok="f" gradientshapeok="t" connecttype="rect"></path><lock ext="edit" aspectratio="t"></lock></shapetype>

图15-1  缓存的分类

客户端缓存—— 这点大家都有直观的印象。比如你去一个新的网站,第一次可能要花一阵子时间才能载入整个页面。而以后再去呢,时间就会大大的缩短,原因就在于这个客户端缓存。现在的浏览器都比较智能,它会在客户机器的硬盘上保留许多静态的文件,比如各种gif,jpeg文件等等。等以后再去的时候,它会尽量使用本地缓存里面的文件。只有服务器端的文件更新了,或是缓存里面的文件过期了,它才会再次从服务器端下载这些东西。很多时候是IE替我们做了这件事情。

服务器端缓存—— 有些东西没法或是不宜在客户端缓存,那么我们只好在服务器端想想办法了。服务器端缓存从性质上看,又可以分为两种。

(1)静态文件缓存

好多页面是静态的,很少改动,那么这种文件最适于作静态缓存。现在的IIS 6.0这部分内容是直接存放在Kernel的内存中,由HTTP.SYS直接管理。由于它在Kernel Space,所以它的性能非常的高。用户的请求如果在缓存里面,那么HTTP.SYS直接将内容发送到network driver上去,不需要像以前那样从IIS的User space的内存copy到Kernel中,然后再发送到TCP/IP stack上。Kernel level cache几乎是现在高性能Web server的一个必不可少的特性。

(2)动态缓存

动态缓存是比较有难度的。因为你在缓存的时候要时刻注意一个问题,那就是缓存的内容是不是已经过时了。因为内容过时了可能会有很严重的后果。比如网上买卖股票的网站。你给别人提供的价格是过时的,那人家非砍了你不可。缓存如何发现自己是不是过时就是一个非常复杂的问题。

在ASP.NET中,常见的动态缓存主要有以下几种手段:

Ø  传统缓存方式

Ø  页面输出缓存。

Ø  页面局部缓存。

Ø  利用.NET提供的System.Web.Caching 缓存。

Ø  缓存依赖。

 

15.4.2  传统缓存方式

比如将可重复利用的东西放到Application或是Session中去保存。

 Session["Style"] = val;
 Application["Count"] = 0;

系统缓存全解析 [转]相关推荐

  1. 【转】系统缓存全解析二:动态缓存(4)-第三方分布式缓存解决方案 Memcache(2)...

    缓存系统MemCached的Java客户端优化历程(转载自http://code.google.com/p/memcache-client-forjava/.) Memcached是一种集中式Cach ...

  2. 【转】系统缓存全解析二:动态缓存(2)-页面局部缓存的两种方式

    有时缓存整个页面是不现实的,因为页的某些部分可能在每次请求时都需要变化.在这些情况下,只能缓存页的一部分.顾名思义,页面部分缓存是将页面部分内容保存在内存中以便响应用户请求,而页面其他部分内容则为动态 ...

  3. 【转】系统缓存全解析一

    具体请看:(http://msdn.microsoft.com/zh-cn/library/aa478965.aspx) 1,数据库过程缓存(执行计划缓存):缓存sql脚本的执行计划+缓存sql脚本的 ...

  4. ASP.NET缓存全解析4:应用程序数据缓存(转)

    ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...

  5. Android 5.0系统特性全解析

    Android 5.0 Lollipop是今年最为期待的产品升级之一.它将带来全新的设计语言,更多人性化的功能,以及最纯正的Google味道. 最近Google陆续发布的Inbox.新版Gmail和今 ...

  6. 阿里巴巴开源限流系统 Sentinel 全解析

    今年下半年阿里开源了自研的限流系统 Sentinel,官方对 Sentinel 的介绍中用到了一系列高大山的名词诸如 限流.熔断降级.流量塑形.系统负载保护等,还有漂亮的形容词诸如 轻巧.专业.实时等 ...

  7. 《江湖X:汉家江湖》游戏论剑系统技术全解析

    系统简介 我们在<江湖X:汉家江湖>系统中设计了一个每晚9点-10点的论剑系统,它的核心是一个带实时BAN/PICK的服务端自动计算的RANK框架. 如图: 根据双方分数匹配上之后,双方轮 ...

  8. iOS系统3DTouch全解析

    概述 iOS10系统于今晨登录中国,在系统中对3D Touch的使用需求更频繁,所以对iOS9中便引入的3D Touch功能做一些了解是很有必要的 在日常开发中,我们经常需要使用3D Touch中的两 ...

  9. 最全解析:支付宝钱包系统架构内部揭秘

        亿邦动力网App电商新闻全新栏目--每日一干,与广大电商同胞相约每晚8:30,献上最精彩的一"干".如果你也有关于电商领域的运营法宝.营销创意.管理迷津......欢迎投稿 ...

最新文章

  1. drcom linux怎么运行,drcom for linux
  2. Eigen 矩阵运算库在实际项目中的使用
  3. 暑假周总结七8.26
  4. 软件专业毕业生之一个月攻略
  5. php mvc多态实例,asp.net mvc-多态模型绑定
  6. PWN-PRACTICE-BUUCTF-7
  7. MATLAB一维数组的创建与元素提取
  8. Assembly.CreateInstance()与Activator.CreateInstanc
  9. 根据卡号识别银行卡类型
  10. 图像分割并存储 matlab,用于面积增长的Matlab图像分割程序
  11. 信息系统项目管理师(2022年) —— 第 16 章 项目变更管理
  12. python 调用函数
  13. 3.26 文字工具的使用 [原创Ps教程]
  14. 徐思201771010132《面向对象程序设计(java)》第二周学习总结
  15. Java复习攻略02
  16. 数据压缩实验:JPEG原理及代码分析
  17. 分解因子算法——Pollard rho算法
  18. Debian 查看 硬盘 SD卡 容量 内存大小
  19. 【CH376】关于CH376的一些使用总结
  20. 4412开发板UT-Exynos4412三星ARM四核旗舰开发平台android4.0GPS功能

热门文章

  1. 字符串处理 —— 最大最小表示法
  2. 石子合并(洛谷-P1880)
  3. 信息学奥赛C++语言: 抽奖1
  4. 信息学奥赛C++语言:幸运奶牛
  5. 8 CO配置-控制-一般控制-定义 CO 版本的分类账
  6. 48 FI配置-财务会计-固定资产-与总账集成-定义折旧范围到总账的过账方式
  7. python封装api给vue_Vue axios api统一管理的封装
  8. 尚硅谷_springcloud(2020新版 思维导图_全网最火SpringCloud2020全家桶教程
  9. python执行批处理文件_如何从Python中执行批处理文件,从而改变调用进程的环境?...
  10. linux内核那些事之early boot memory-memblock