缓存概述

  缓存从分布来说有两种:

一、客户端缓存

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

二、服务器缓存

  有些东西没有办法或者说是不适宜在客户端缓存的,这个时候就必须在服务器端想办法了。服务器端缓存从性质上看,又可以分为两种:

  1、静态文件缓存

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

  2、动态缓存

  动态缓存是比较有难度的。因为你在缓存的时候要时刻注意一个问题,那就是缓存的内容是不是已经过时了,因为过时了可能会有很严重的后果。就像是网上买卖股票的网站,给别人的提供的价格是过时的,那人家非得找你拼命。
  在Asp.net中,常见的动态缓存主要有以下几种手段:
  1、传统缓存方式。
  2、页面输出缓存
  3、页面局部缓存
  4、利用.Net提供的System.Web.Cache缓存。
  5、缓存依赖。

  1)、传统缓存

  传统缓存的方式就是利用Application或者Session去保存可重复利用的东西。
  比如:

Session["test1"] = "测试1";
HttpContext.Application["test2"] = "测试2";

  2)、页面输出级缓存

  页面输出缓存是最为简单的缓存机制,仅仅需要配置就可以实现,页面输出缓存指的是程序将输 出的页面内容全部保存在服务器内存中。当用户请求这些页面时,系统直接从内存中输出相关数据,在此 期间,如果缓存没到期,将一直取的都是内存中的数据。在这个过程中,页面是将整个页面的数据内容都保存在内存中。这个东西对于那些页面需要执行大量处理操作才得到结果的页面非常有用。
  在Asp.net WebForm中使用页面缓存非常简单,只需要在页面顶部加一句声明即可。

<%@ OutputCache Duration="60" VaryByParam="none" %> 

  MVC的声明与WebForm类似,只不过是将[OutputCache]设置在Action上而已。

[OutputCache(Duration = 10)]

  至于众多的参数,本处不做解释了,在程序里敲上[OutputCache]再转到定义就能够看到详细。

  3)、控件缓存

  在WebForm中还允许将某一个控件缓存的局部缓存的方法,但是由于在MVC中控件并不能用了,因此本处略过。在这篇文章有MVC Action缓存的方法。
  http://www.cnblogs.com/kissdodog/archive/2013/05/21/3090513.html

缓存概述

时间: 2024-08-01 14:48:25

缓存概述的相关文章

缓存概述[1]

Java缓存机制概述-1 一.    概述 所谓缓存就是把程序经常使用的对象读到内存中,以后使用直接从内存中读取即可.一般针对的是:数据库.硬盘中的资源读取耗费大量时间.缓存是一种典型的空间换时间的方案. Java中使用最多的思想:key-value缓存,一般用Map实现. 1.0 缓存需要解决的问题 缓存数据的存放时间问题,比如Session会设置在timeout时间: 缓存数据和真实数据的同步问题,缓存中的数据可能会随着应用程序变化,那么缓存的数据就要同步会数据库中,以保持一致性: 多线程并

ATS缓存概述

在volume.config里面可以配置多个volume,比如说有4块磁盘,配了3个volume.每块磁盘都有3个volume,一个磁盘的一个volume是一个stripe,stripe是磁盘级别的最小单位.stripe存着若干个存储对象,默认每个对象最小占8000字节(proxy.config.cache.min_average_object_size),每个存储对象标示为一个fragment,默认大小是1M(proxy.config.cache.target_fragment_size),每

MemCached配置与缓存知识概述

先看看百度百科里面对缓存的介绍: 缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器.由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用.缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能.当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,有大缓存,则可以将那些零碎数据暂存在缓存中,减小系统的负荷,也提高了数据的传输速度. 这个是介绍了电脑的硬盘缓存..当然,电

Hibernate缓存

一.Hibernate缓存概述 Hibernate中提供两个级别的缓存,一级缓存和二级缓存. 1.一级缓存是Session级别的缓存,它属于事物范围的缓存,一级缓存有hibernate进行管理. 2.二级缓存是sessionFactory级别的缓存,它属于进程范围的缓存,二级缓存又可分为"内置缓存"和"外置缓存",内置缓存:是hibernate在创建sessionFactory时会加载.hbn.xml文件并会在内存中初始化一些默认的sql语句,该内置缓存是只读的:外

iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求

iOS网络缓存扫盲篇 --使用两行代码就能完成80%的缓存需求 下篇预告:使用80%的代码来完成剩下的20%的缓存需求 .敬请 star (右上角)持续关注. 目录 当我们在谈论缓存的时候,我们在谈论什么? GET网络请求缓存 80%的缓存需求:两行代码就可满足 控制缓存的有效性 文件缓存:借助ETag或Last-Modified判断文件缓存是否有效 Last-Modified ETag 总结 一般数据类型借助 Last-Modified 与 ETag 进行缓存 剩下20%的网络缓存需求--真的

c#缓存介绍(转)

缓存主要是为了提高数据的读取速度.因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能. 本章从缓存所在的命名空间"System.Web.Caching"开始,详细介绍框架提供的缓存类和操作方法,主要涉及简单数据的缓存.数据缓存依赖和数据库缓存依赖三个技术要点,最后演示一个完全使用缓存实现数据读取的实例.讲解流程如图16-1所示. 图16-1  缓存命名空间的讲解流程 16.1  Sys

分布式缓存

本文将从理论的角度去介绍分布式缓存,在构建大规模的web应用时,缓存技术可以说是必备的,学习的必要性不言而喻. 分布式缓存概述 1.1 分布式缓存的特性 分布式缓存具有如下特性: 1) 高性能:当传统数据库面临大规模数据访问时,磁盘I/O 往往成为性能瓶颈,从而导致过高的响应延迟.分布式缓存将高速内存作为数据对象的存储介质,数据以key/value 形式存储,理想情况下可以获得DRAM 级的读写性能; 2) 动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能

varnish页面缓存代理服务详解

一.Web缓存 1.web缓存 web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的"副本,可以从本地的存储设备而不是原始服务器设备中提取这个文档. 通过key-value键值方式缓存,key中保存了URL路径,value中保存了web内容,其均使用hash格式,算法保证能在海量数据中快速命中缓存内容 (1)缓存优点 1) 减少冗余的数据传输,节省带宽 2) 缓解网络瓶颈问题,无需耕宇宽带就能更快的加载页面 3) 降低对原始服务器的要求,服务

MySQL 权限和查询缓存

MySQL 权限和查询缓存 ================================================================================ 概述: ================================================================================ MySQL用户和权限管理    1.权限类别 ★用户账号:[email protected] user:账户名称: host:此账户可通过哪