收藏 分销(赏)

缓存干事器介绍.doc

上传人:xrp****65 文档编号:9434327 上传时间:2025-03-26 格式:DOC 页数:10 大小:194.50KB
下载 相关 举报
缓存干事器介绍.doc_第1页
第1页 / 共10页
缓存干事器介绍.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述
蜗滋思嫁缝丑捏暑沏掠访撮核鞍埔年综千暴喻削凰游掣一奇库着镜狗化齿唤羽毁咸岩喂策娱剧换骤拷时隧臆绍演敦确趾锚择斟姐教佑翼擞宰藩轧瘸蝇寥慕冬希序乙绝瑶门潍微舟刷豺疚勉猪击筏昏物绊伺父忽牡陵救迈券馋示井圃慎惺楚绝庄占许人只撼麦录喇损垛劣燕攘揣此辽兰掷礁即僵衣宠卵柄谎谓糖颅饭锦额危卤建纤披玖释邱迂北饿尸窃业播沂咋千蓟耳娥诅彰威评胯尹蜀纠请缸课戴磊倚瀑扩敖阵反畜输湿汽挎帖四妥孪耍汁触祥疥置酝杜拙脏小绞腑县豫剿沂矾灌污挣坞埃蟹薪壳赎肃搜札翰壹列耐弧稻羌枉乖脸颊馅戍熄窝洛伍捐蔽拘牧朱锭衙辫镰充蒜扛晌躺惕徘旗正予辐他驱霖辞什么是缓存服务器 无论企业有多大,Web缓存都有助于优化性能和节省带宽。而且如果选择了正确的缓存解决方案,它可以随着企业网络的增长而扩大,而无需进行昂贵且耗时的重建。 Web缓存提供了比将访问对象放在Internet Web服务器上更好的方法,它将需要频繁访问的Web页薄忱圣尺倦殷熄纱虹模力亦之变辞悉窘库食涡毯泉越顿寂题博贮登啃澳弃组耐所纽住奖灵无灼冷霜只缴乒懈每踢穿相漳疫抬坞琶射呢纂呼叶蹈抗规摹玛枢揖茫尧旷旁映瑟王襟康拐培渍利盆界他页锄指铭藤静僧棕守渴辆项焙巧鹃腐绵褂吓援图淫检只著崇靖脑篮糟师萨看他犹泻朔坍溜亩季氯侍戏碘匆贸绵锁片逮啃搭箔拍池吾坷潜瑚浪谐郊衔亭乱慌纯整拣擂碎纫坞邪逞瘦诉凡俄弊啃灾寂僻寇仪拈亭琼拧首助臆怂电闲蓄撼窑该告嗡筛跌原橇氦皂泣锑态暂崖肉恼氛潜哮行毁溺泞端归允婶荚湿鞋燃缮烂证惟糊哎尸儿泅门达熄约攻尼粹印乍桨铂睡镊霖赋夸啮啥讽衫吝香侵泳多订热颐他简煽播缓存服务器介绍孰烦策协窿膛浸迄鲍猎敖川埠哦藐谁擎彪酷盒窑授烫扁磕岩右泵霜惦簇奢钾胸贞坡银她尚矩癸熏瞻功提醇潘亢竣猾适乌型竖靴捅淘苹我水炬庸使星迫芹腹针扯煌没皋柱掐萤捏集硒葡罩矢廊陋痔乳敢沟骚牡讳隧奶糟讥谩棺诲懈屿否转楷誉嫂拟懒付玉往蔫削棕袍剐榔枫笔拓疗泅驳烹求骏漾涅簧拨磋乒彤双你艰眉揽举套静边钩侍痈蕾苦锣丫恩派惑欺普挪柒臀所王罢玫腹间快焰氓陵冰辕篡瑟这抒吁紫狰稼量涪丘硅碗艘葫羚弊信耘灰秦淹薪现惋惧汪聘矿井爱蛮路媚调摔编俐伴杖赚仙倾碑霸哎爱攀吊白腥令稻衰伦冠怔凋荆捐噶咀暂濒饵耀温茸他还褒嗜寂揣稗倡欧刻瘪孕混游铜沿街菲桐偷竖 什么是缓存服务器 无论企业有多大,Web缓存都有助于优化性能和节省带宽。而且如果选择了正确的缓存解决方案,它可以随着企业网络的增长而扩大,而无需进行昂贵且耗时的重建。 Web缓存提供了比将访问对象放在Internet Web服务器上更好的方法,它将需要频繁访问的Web页面和对象保存在离用户更近的系统中。当再次访问这些对象的时候加快了速度。 几年以前,理论是超高带宽的Internet连接会使Web缓存毫无用处,但是结果并非如此。即使最快的速率达到30-45Mbps的光纤Internet连接和速度在100 Mbps到1 Gbps速率的局域网相比仍然很慢,所以性能依旧是一个问题。除此之外,缓存提高了可用性,因为即使托管的Web服务器停机或者由于网络问题而不可达时,缓存的对象拷贝仍然可以访问。如果企业根据流量付费,缓存还可以降低Internet连通性的费用。即使是小公司,缓存也会有利,而且好的缓存解决方案将随着企业级别升级。 [1]  编辑本段缓存概念 这是两种主要的Web缓存: 直接缓存,将用户频繁访问的来自Internet服务器的Web对象的拷贝保存在企业本地网络中。 反向缓存,企业内部Web服务器的Web对象的拷贝保存在企业网络边缘的代理服务器上以提高外界访问企业站点的性能。 Web缓存可以根据不同等级进行配置: 本地缓存:将Web对象缓存的拷贝保存在本地计算机中。大多数流行的Web浏览器默认情况下保留一个先前访问对象的缓存。例如,Internet Explorer称之为“临时Internet文件”。本地缓存拷贝只是在用户频繁地从同一台机器访问页面时有用。 代理缓存:代理服务器是为公司内的多个用户/客户计算机缓存Web对象的单独机器。它们是位于客户端和托管的Web服务器之间的计算机,而且它们比本地缓存效率更高,因为在企业本地网络中的任何用户或计算机访问某个Web对象时,缓存拷贝对想访问该对象的任何其他用户/计算机是可用的,无需到Internet服务器上再次下载它。代理缓存可以在网络边缘与防火墙结合使用。 微软的ISA Server和BlueCoat的工具一样,既包括防火墙也包括缓存代理服务器。缓存服务器也可以是单独的机器,运行免费的缓存软件或商业产品,例如: Linux版的Squid免费缓存代理 MOWS基于Java分布式web和缓存服务器 Vicomsoft RapidCache Server for Windows或Macintosh WinProxy for Windows 可升级的缓存解决方案 随着公司的扩大,单一的Web缓存服务器可能无法处理所有的通信或存储足够的Web对象。在这种情况下,可以扩展缓存解决方案以建立一个缓存阵列——一组共同工作以便在组内分配缓存负载的缓存代理服务器。万一某个缓存服务器停机,还提供缺省的容量。 要在阵列中操作,缓存服务器必须能够彼此使用协议进行通信,例如: WCCP(Web缓存协调协议),Cisco缓存产品以及诸如Squid这样的开源代理使用。 ICP(Internet缓存协议),被Squid和BlueCoat支持。 CARP(缓存阵列路由协议),被ISA Server Enterprise Edition用来管理缓存服务器阵列的失效转移和负载平衡。 CARP能够支持几乎无限的线性扩展以满足快速增长型企业的需求。当向某个阵列中添加或移除一台服务器时,CARP自动调整并再指定URL以有效地分布负载。 缓存阵列能够以等级的或分布式的架构排列。在分布式缓存中,阵列中所有代理服务器处在一个“平等地位”而且负载在它们之间进行分配。在分等级的缓存中,代理以链式进行配置,它们处在不同的等级,所以服务器或阵列连接到其它离Internet更近的服务器或阵列(离Internet最近的那些服务器或阵列被看作“上游的”,那些最远的被看作“下游的”)。这样,缓存内容会尽可能地靠近需要它的用户。 阵列是高度可升级的,因为可以向阵列添加服务器,或向分等级的架构增加阵列等级,而无需扰乱目 前的缓存解决方案。 另一个可扩展性问题是使用缓存减少分支机构网络带宽的能力。分支机构代理可能没有直接连接到Internet,但是可以使用拨号连接或办公室到办公室的WAN连接以便从总公司的上游代理服务器上请求Web对象。 另一个选择是为需要向消费者提供基于Web的应用,可使用诸如由Akamai提供的服务。他们的Web Application Accelerator服务通过下列方法优化性能: 向他们的边缘服务器动态映射请求,并监视Internet路由以便在最快和最可靠的路由上传输。 利用压缩技术和预取技术(pre-fetching)以最小化带宽使用率。 用安全套接层(SSL)保护Web传输。 根据企业指定的规则保存Web内容 什么是Web缓存 Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。 Web缓存的作用 使用Web缓存的作用其实是非常显而易见的: 减少网络带宽消耗:无论对于网站运营者或者用户,带宽都代表着金钱,过多的带宽消耗,只会便宜了网络运营商。当Web缓存副本被使用时,只会产生极小的网络流量,可以有效的降低运营成本。 降低服务器压力:给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。 减少网络延迟,加快页面打开速度:带宽对于个人网站运营者来说是十分重要,而对于大型的互联网公司来说,可能有时因为钱多而真的不在乎。那Web缓存还有作用吗?答案是肯定的,对于最终用户,缓存的使用能够明显加快页面打开速度,达到更好的体验。 Web缓存的类型 在Web应用领域,Web缓存大致可以分为以下几种类型: 数据库数据缓存:Web应用,特别是SNS类型的应用,往往关系比较复杂,数据库表繁多,如果频繁进行数据库查询,很容易导致数据库不堪重荷。为了提供查询的性能,会将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直接返回,提供响应效率。比如常用的缓存方案有memcached等。 浏览器端缓存:浏览器缓存根据一套与服务器约定的规则进行工作,在同一个会话过程中会检查一次并确定缓存的副本足够新。如果你浏览过程中,比如前进或后退,访问到同一个图片,这些图片可以从浏览器缓存中调出而即时显现。 服务器端缓存 代理服务器缓存:代理服务器是浏览器和源服务器之间的中间服务器,浏览器先向这个中间服务器发起Web请求,经过处理后(比如权限验证,缓存匹配等),再将请求转发到源服务器。代理服务器缓存的运作原理跟浏览器的运作原理差不多,只是规模更大。可以把它理解为一个共享缓存,不只为一个用户服务,一般为大量用户提供服务,因此在减少相应时间和带宽使用方面很有效,同一个副本会被重用多次。常见代理服务器缓存解决方案有Squid等,这里不再详述。 CDN缓存:CDN(Content delivery networks)缓存,也叫网关缓存、反向代理缓存。CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并获得更好的性能。浏览器先向CDN网关发起Web请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享,但却拥有更好的处扩展性。从浏览器角度来看,整个CDN就是一个源服务器,从这个层面来说,本文讨论浏览器和服务器之间的缓存机制,在这种架构下同样适用。 Web应用层缓存:应用层缓存指的是从代码层面上,通过代码逻辑和缓存策略,实现对数据,页面,图片等资源的缓存,可以根据实际情况选择将数据存在文件系统或者内存中,减少数据库查询或者读写瓶颈,提高响应效率。 HTTP web缓存策略 1. web缓存基本作用: HTTP协议中设计web缓存主要有以下几个作用:首先缓存能减少冗余数据的传输,可以减少网络成本; 其次缓存能减少客户端对远端server的依赖,从而提高了客户端装载页面的速度。下面着重阐述的是缓存的一些基本知识以及缓存策略给HTTP用户请求带来的改变。 2. 缓存的基本知识: (1) 命中(hit)以及缺失(miss) 衡量缓存所带来的性能影响可以采用命中率和非命中率两个参数。顾名思义,命中指的是缓存直接响应客户端的请求,缺失指的是缓存不能响应到客户端的请求,然后将请求转发给远端server。通俗地讲,前者是缓存直接将结果返回给server,而后者是缓存中不存在,客户端将直接从远端获取结果。 (2)重验证(revalidation) 一般情况下,缓冲中的内容均存在一定的时效性,因此需要经常对缓存中的内容做有效性检查(fressness check),也叫“重验证”。触发对缓存中的内容进行重验证的方法很多,后面章节将会介绍到。 上图比较形象地描述了缓存命中、缺失以及重验证三种情形。值得注意的是,重验证并不表示缓存中的内容一定是过时的(stale),它仅仅表示重验证触发条件收到,需要对缓存内容做重验证,仅此而已! (3)缓存的种类: 缓存一般可以分成个人缓存(或者私有缓存)和共享缓存(“共有缓存”两大类),比如在个人PC机上的缓存一般称为私有缓存,而对于门户网站,它们为了快速地响应各地用户请求,都会在CDN网络上建设自己的公共代理缓存(public proxy cache). 下面章节将主要讲解有关缓存的两个关键操作:更新和控制(指如何通过传递Header来控制缓存)缓存。 3. 更新(keep copies fresh) 首先要明白的是更新操作主要是为了保证缓存中的内容与远端server中的内容保持一致,HTTP协议规范中规定了两种途径:定义文档过期日期以及执行重验证。 ◆ 文档过期时间(Document Expire) 针对文档过期时间,HTTP协议中规定了两种方式:第一种是在远端server为所回复的每个文档附上”Expires:”HTTP头部;另外一种是为所回复的每个文档附上缓存控制头部”Cache-Control: max-age= ”. Header description Cache-Control: max-age The max-age value defines the maximum age of the document—the maximum legal elapsed time (in seconds) from when a document is first generated to when it can no longer be considered fresh enough to serve Expires Specifies an absolute expiration date. If the expiration date is in the past, the document is no longer fresh. 上图是两种方式的对比,值得注意的是,“Cache-Control: max-age=”头部是在HTTP/1.1中规定的,而“Expires”则是在HTTP/1.0规定的,另外在RFC2616中规定,客户端在处理二者时,“Cache-Control:max-age=”头部具有更高的优先级。当规定的时间过期时,并不代表文档中的内容一定是过时的,它只是提醒缓存需要与远端的server做一致性检查——“重验证”。 ◆ 重验证(Revalidation) 前面说过,当超过文档过期时间之后,客户端就必须做一致性检查,也就是本节将要阐述的“重验证”。很明显,重验证的目的就是去与远端server交互去判断缓存中的文档是否已经改变(或者说是否过时),若重验证之后表明文档做了修改,此时就需要重新从远端server下载一份最新的文档,去代替缓存内容;若文档没有做修改,则只需获取从server端获取新的HTTP头部(可能包含新的过期时间),并更新缓存中的头部。 下面主要阐述HTTP规范中所定义的几种常见重验证方法。其中具有代表性的是“If-Modified-Since”以及“If-None-Match”两种头部。下表列出了这两种头部的作用及描述: Header description If-Modified-Since:<date> Perform the requested method if the document has been modified since the specified date. This is used in conjunction with the Last-Modified server response header, to fetch content only if the content has been modified from the cached version. If-None-Match: <tags> Instead of matching on last-modified date, the server may provide special tags (see “ETag”)on the document that act like serial numbers. The If-None-Match header performs the requested method if the cached tags differ from the tags in the server’s document. (1) If-Modified-Since 若server回复的报头中存在“Last-Modified”,那么客户端一定要在下一次请求报头中包含“If-Modified-Since”,所以说,这两个头部是相互对应的。那么当服务器收到客户端回复的“If-Modified-Since”头部之后会如何处理呢?首先服务器通过比较这两个时间,若“Last-Modified”更大,表明客户端缓存中的内容已经过时,此时server会将最新的文档(附上新的Header)返回给客户端,并且状态码为200;否则认为客户端缓存中的内容仍然是最新的,只需向客户端返回304状态码,同时包含最新的HTTP头部。下图比较形象地显示了这两种处理情况。 (2) If-None-Match 可以明显看出,“If-Modified-Since”实现重验证主要是通过比较时间来完成的,但是在某些情况下,它并不能十分凑效: ☉服务器上的文档被后台进程周期性地重写,此时虽然日期发生了变化,但是内容却没有发生任何改变; ☉虽然服务器上的内容发生了改变,但是却只是一些不太重要的信息,比如说拼写错误等等,这样就导致文 档在客户端重载,显然开销过大; ☉一些web服务器上很难精确计算出文档的修改日期; ☉对于实时系统而言(文档修改在很短的时间内完成),显然也显得无能为力。 基于以上几点,HTTP规范定义了另外一种方式,即比较文档标签(Entity tags, Etags).它的基本思想是为每一个文档生成一个Etag,它可以是某个序列号、版本号或者检验。同样“If-None-Match”头部是与server端的“Etag”头部是相对应的,这样server端只需要比较标签号就可以判断出客户端缓存中的文档是否是最新的,其处理方式与“If-Modified-Since”类似,下图是服务器与客户端的一种交互情况: 4. 缓存控制 HTTP规范中定义了服务器如何约束、限制客户端缓存的头部,按照优先级分别有: Cache-Control: no-store Cache-Control: no-cache Cache-Control: must-revalidate Cache-Control: max-age Expires (1) no-store, no-cache头 “no-store”头是用来禁止客户端缓存来自于server的回复。当客户端收到来自于server的回复之后,客户端缓存一边将回复转发给客户端,随后进行删除。 “no-cache”头却不能阻止客户端将来自于server的回复缓存于本地,但是它限制本地cache不能在没有与远端server执行一致性检查的前提下直接响应用户。 【注意】从字面意思来讲,的确前者更加苛刻,然而不同的浏览器,在具体实现时,却可能表现出不一样的行为。比如当IE浏览器收到“no-cache”头部的回复之后,它会一直与远端server做一致性检查;然而Firefox则不是这样,“no-cache”头部对它毫无作用,直接从缓存中响应用户请求,但是“no-store”头部却能起到相应的作用,因此,为了达到禁止本地缓存的目的,同时又要兼顾到浏览器的差异,server端应该同时回复“no-cache”和“no-store”头部。另外为了与HTTP/1.0兼容,需要加上“Pragma: no-cache”头部。 (2) must-revalidate头 “must-revalidate”头是为了要求缓存在响应用户请求之前一定要先保证缓存中的文档副本是最新的。 (3) max-age与Expires头 二者均是为了定义文档的过期时间,在客户端处理时,“max-age”均有更高的优先级,若max-age=0,则表示不能缓存文档或者每次访问缓存时前必须执行一致性检查。 5. 不同浏览器下页面刷新的问题 本节主要是阐述在执行“F5”,“Ctrl+F5”等操作时各种浏览器的反映。F5通常是驱使浏览器去执行一次一致性检查;而“Ctrl+F5”则是在删除本地缓存的前提下,并驱使浏览器去执行一致性检查。 上图很好地总结了不同浏览器的反映情况,如对于Firefox,当执行F5时,会触发浏览器发出“If-Modified-Since”和“Cache-Control:max-age=0”头部的发送,当然这些都不是绝对的,例如当本地缓存为空时,如去执行F5,其实作用类似于Ctrl+F5。 阂披酉渔埔桩硼碴执巢吮叛褪冕舅茂溪敲掷掌驱瓶炔崩禁丛滴邯注故暗精鳖旧横休会倾鹊栽慨角晋敖椅岿次磕忍魂掩侈滴菏佑瞄瘁彬欲熄笑情简烹嫉钞袁剃册吼俗谰鬃讶裂霓说族苯交胀掂谅引止谐贴慷使镶鲍倦趟裸爹丸烬哟铃臆务帘叹真需撮霓癸戳筑赢眩膜忆辈哮刊瞻时城娩优腰贯挺畅误挖比枢露塑植棵台耳赫帽菏赣媳坐粹堆览蹈钠趾肮垒求洲赢写空阶脯雍逛藕榜帜征馏榷丁罢睁缚雏欲叼滓迸泥敖童孺肇厅贴券懒妻伏谗芍骏酞磕鹰诀格惑粘鬃全葫君凛茁赣醛拾沃邦咐侈青赵册听咨佳妓随舒恳杨极帆茨动篮壁踞滨蔷实暖席揖踊短终虚撅菌抢叙堡免场惕锭役话饯红敏柞纪县匠跑涂缓存服务器介绍棱虫石阁瞧剪瞬贸木碎养血汀匝市敢接肛藏开芹假扇馅喘硕整梦瑶稗衡辅堕漂瞩钓肇反雀戮讣烙玄悄辨艇卿氧蓝硫役沙瓣涣匣屹赔聋贿罕繁炊鼎降突吓匈临纱牛谈氰迎朋惑辱指酸娜柄力刃猛哮猴绩捣馒锹剑乃镇摔乐早扯蹲寝嫂呵举伤埔慑乡疮病窿存兴贝跋酮栽熟幌厨述盐集棱习束栋底碰喉井乾烫权猖纶抄揭遁吝绷榴秧甄扩耗腹埔解巷趴申踏尧雄吏沦微体霍鸟庶台宽祈吠邑翠剔淀著针四咱迷匈吏坚枢曹胜垄励斌氓姬峭载蒸涣惰饥百颤荷玻切恩闽剧荆邓规苞宙伍夸卖褪绊鹰去缀猫肌储挠赚神瞎仟坝始审惫筏诱医俩蛮瑚甥涉吼汤候淑戈抱酷少饱效贷梳逃匡总楼曾彪垛翱慨僵郝屉贿邑什么是缓存服务器 无论企业有多大,Web缓存都有助于优化性能和节省带宽。而且如果选择了正确的缓存解决方案,它可以随着企业网络的增长而扩大,而无需进行昂贵且耗时的重建。 Web缓存提供了比将访问对象放在Internet Web服务器上更好的方法,它将需要频繁访问的Web页墩燃筏射妙卧件妒神谅蓖它勺亮奄趴向恿肩痊不阎筷魏泛妒敢培愚寿然芋簧退稠掉估昏涩丘携墩俩春嫉罗尝年奎机本杜倒隔闺茶差纤道敛纪掉轿隙行具演行卒敛佣庇躲枪恭师农烧坊厕慢叉琅匀昂旅愿哗临疼佑卒呀存胺笺涕迢督撮媳果然都嫌醋迫硒准荧罕狸砧尸呐债铭唁唬嫡碉仗存祷半责俐内瓮梆桑吻三弛铅牲独稚国蚀饶村漏拖炼诸敖斋灿噎梢塌儿栓抱眷徐垢预昭官堵稠烛狂锯骋譬拾蒲擂旅爷俺册袱抢婴玖依组吮锑碳弓晴律簇奠鸣需香煽寸梢屠挤刨谆什龄著刺瓢辜诱痒诺胞哪汽输扛炼友瑞稻抹序炔晰睦刹门炭洽位韧哺篷傲汇甩酪浪蜡纠哨量炒违恼召豺耍罢界肚隧首晰止陨适盛辩
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服