




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
什么是缓存服务器无论企业有多大,Web缓存都有助于优化性能和节省带宽。而且如果选择了正确的缓存解决方案,它可以随着企业网络的增长而扩大,而无需进行昂贵且耗时的重建。Web缓存提供了比将访问对象放在InternetWeb服务器上更好的方法,它将需要频繁访问的Web页面和对象保存在离用户更近的系统中。当再次访问这些对象的时候加快了速度。几年以前,理论是超高带宽的Internet连接会使Web缓存毫无用处,但是结果并非如此。即使最快的速率达至U30-45Mbps的光纤Internet连接和速度在100Mbps到1Gbps速率的局域网相比仍然很慢,所以性能依旧是一个问题。除此之外,缓存提高了可用性,因为即使托管的Web服务器停机或者由于网络问题而不可达时,缓存的对象拷贝仍然可以访问。如果企业根据流量付费,缓存还可以降低Internet连通性的费用。即使是小公司,缓存也会有利,而且好的缓存解决方案将随着企业级别升级。⑴编辑本段缓存概念这是两种主要的Web缓存:直接缓存,将用户频繁访问的来自Internet服务器的Web对象的拷贝保存在企业本地网络中。反向缓存,企业内部Web服务器的Web对象的拷贝保存在企业网络边缘的代理服务器上以提高外界访问企业站点的性能。Web缓存可以根据不同等级进行配置:本地缓存:将Web对象缓存的拷贝保存在本地计算机中。大多数流行的Web浏览器默认情况下保留一个先前访问对象的缓存。例如,InternetExplorer称之为“临时Internet文件”。本地缓存拷贝只是在用户频繁地从同一台机器访问页面时有用。代理缓存:代理服务器是为公司内的多个用户/客户计算机缓存Web对象的单独机器。它们是位于客户端和托管的Web服务器之间的计算机,而且它们比本地缓存效率更高,因为在企业本地网络中的任何用户或计算机访问某个Web对象时,缓存拷贝对想访问该对象的任何其他用户/计算机是可用的,无需到Internet服务器上再次下载它。代理缓存可以在网络边缘与防火墙结合使用。微软的ISAServer和BlueCoat的工具一样,既包括防火墙也包括缓存代理服务器。缓存服务器也可以是单独的机器,运行免费的缓存软件或商业产品,例如:Linux版的Squid免费缓存代理MOWS基于Java分布式web和缓存服务器VicomsoftRapidCacheServerforWindows或MacintoshWinProxyforWindows可升级的缓存解决方案随着公司的扩大,单一的Web缓存服务器可能无法处理所有的通信或存储足够的Web对象。在这种情况下,可以扩展缓存解决方案以建立一个缓存阵歹一一组共同工作以便在组内分配缓存负载的缓存代理服务器。万一某个缓存服务器停机,还提供缺省的容量。要在阵列中操作,缓存服务器必须能够彼此使用协议进行通信,例如:WCCP(Web缓存协调协议),Cisco缓存产品以及诸如Squid这样的开源代理使用。ICP(Internet缓存协议),被Squid和BlueCoat支持。CARP(缓存阵列路由协议),被ISAServerEnterpriseEdition用来管理缓存服务器阵列的失效转移和负载平衡。CARP能够支持几乎无限的线性扩展以满足快速增长型企业的需求。当向某个阵列中添加或移除一台服务器时,CARP自动调整并再指定URL以有效地分布负载。缓存阵列能够以等级的或分布式的架构排列。在分布式缓存中,阵列中所有代理服务器处在一个“平等地位”而且负载在它们之间进行分配。在分等级的缓存中,代理以链式进行配置,它们处在不同的等级,所以服务器或阵列连接到其它离Internet更近的服务器或阵列(离Internet最近的那些服务器或阵列被看作“上游的”,那些最远的被看作“下游的”)。这样,缓存内容会尽可能地靠近需要它的用户。阵列是高度可升级的,因为可以向阵列添加服务器,或向分等级的架构增加阵列等级,而无需扰乱目前的缓存解决方案。另一个可扩展性问题是使用缓存减少分支机构网络带宽的能力。分支机构代理可能没有直接连接到Internet,但是可以使用拨号连接或办公室到办公室的WAN连接以便从总公司的上游代理服务器上请求Web对象。另一个选择是为需要向消费者提供基于Web的应用,可使用诸如由Akamai提供的服务。他们的WebApplicationAccelerator服务通过下列方法优化性能:向他们的边缘服务器动态映射请求,并监视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(Contentdeliverynetworks)缓存,也叫网关缓存、反向代理缓存。CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并获得更好的性能。浏览器先向CDN网关发起Web请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享,但却拥有更好的处扩展性。从浏览器角度来看,整个CDN就是一个源服务器,从这个层面来说,本文讨论浏览器和服务器之间的缓存机制,在这种架构下同样适用。Web应用层缓存:应用层缓存指的是从代码层面上,通过代码逻辑和缓存策略,实现对数据,页面,图片等资源的缓存,可以根据实际情况选择将数据存在文件系统或者内存中,减少数据库查询或者读写瓶颈,提高响应效率。HTTPweb缓存策略1. web缓存基本作用:HTTP协议中设计web缓存主要有以下几个作用:首先缓存能减少冗余数据的传输,可以减少网络成本;其次缓存能减少客户端对远端server的依赖,从而提高了客户端装载页面的速度。下面着重阐述的是缓存的一些基本知识以及缓存策略给HTTP用户请求带来的改变。2. 缓存的基本知识:命中(hit)以及缺失(miss)衡量缓存所带来的性能影响可以采用命中率和非命中率两个参数。顾名思义,命中指的是缓存直接响应客户端的请求,缺失指的是缓存不能响应到客户端的请求,然后将请求转发给远端server。通俗地讲,前者是缓存直接将结果返回给server,而后者是缓存中不存在,客户端将直接从远端获取结果。重验证(revalidation)一般情况下,缓冲中的内容均存在一定的时效性,因此需要经常对缓存中的内容做有效性检查(fressnesscheck),也叫“重验证”。触发对缓存中的内容进行重验证的方法很多,后(aJCachihit■Gchi—;丐三顾HL- ,-:Client Cache Server上图比较形象地描述了缓存命中、缺失以及重验证三种情形。值得注意的是,重验证并不表示缓存中的内容一定是过时的(stale),它仅仅表示重验证触发条件收到,需要对缓存内容做重验证,仅此而已!(3)缓存的种类:缓存一般可以分成个人缓存(或者私有缓存)和共享缓存(“共有缓存”两大类),比如在个人PC机上的缓存一般称为私有缓存,而对于门户网站,它们为了快速地响应各地用户请求,都会在CDN网络上建设自己的公共代理缓存(publicproxycache).下面章节将主要讲解有关缓存的两个关键操作:更新和控制(指如何通过传递Header来控制缓存)缓存。3. 更新(keepcopiesfresh)首先要明白的是更新操作主要是为了保证缓存中的内容与远端server中的内容保持一致,HTTP协议规范中规定了两种途径:定义文档过期日期以及执行重验证。♦文档过期时间(DocumentExpire)针对文档过期时间,HTTP协议中规定了两种方式:第一种是在远端server为所回复的每个文档附上”Expires:”HTTP头部;另外一种是为所回复的每个文档附上缓存控制头部"'Cache-Control:max-age=”.HeaderdescriptionCache-Control:max-ageThemax-agevaluedefinesthemaximumageofthedocument—themaximumlegalelapsedtime(inseconds)fromwhenadocumentisfirstgeneratedtowhenitcannolongerbeconsideredfreshenoughtoserveExpiresSpecifiesanabsoluteexpirationdate.Iftheexpirationdateisinthepast,thedocumentisnolongerfresh.上图是两种方式的对比,值得注意的是,“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”两种头部。下表列出了这两种头部的作用及描述:HeaderdescriptionIf-Modified-Since:<date>Performtherequestedmethodifthedocumenthasbeenmodifiedsincethespecifieddate.ThisisusedinconjunctionwiththeLast-Modifiedserverresponseheader,tofetchcontentonlyifthecontenthasbeenmodifiedfromthecachedversion.If-None-Match:<tags>Insteadofmatchingonlast-modifieddate,theservermayprovidespecialtags(see“ETag”)onthedocumentthatactlikeserialnumbers.TheIf-None-Matchheaderperformstherequestedmethodifthecachedtagsdifferfromthetagsintheserver’sdocument.(1)If-Modified-Since若server回复的报头中存在“Last-Modified”,那么客户端一定要在下一次请求报头中包含“If-Modified-Since”,所以说,这两个头部是相互对应的。那么当服务器收到客户端回复的“If-Modified-Since”头部之后会如何处理呢?首先服务器通过比较这两个时间,若“Last-Modified”更大,表明客户端缓存中的内容已经过时,此时server会将最新的文档(附上新的Header)返回给客户端,并且状态码为200;否则认为客户端缓存中的内容仍然是最新的,只需向客户端返回304状态码,同时包含最新的HTTP头部。下图比较形象地显示了这两种处理情况。
GET/announce.htn:lHTTP/1.0ServerIf-r<odifiecl-5ince:Satj29Jun2002j14:30:00GMTServerClientHTTP/1.0304NotModifiedClientDate:Wed63Jul2002,19:18:23GMTExpires:Frij053ul200^14:30:00GHT(a(lbModifie^5incesuccessfulrevalidationGET/announce.hi(i?lHTTP/1.0ServerIf-Modified-Since:Satj29Jun2002j14:30:00GMTServerHTP/1.0200OKDate:Fri,05Jul2002^17:54:40Content-type:text/plainContent-length:124Expires:Morij09Sep2002,05:00:00GKTAllexteriorhousepaintonsalethrough.DustanotherreasonforyouhissuisimeratJae'sHardware!Labor~ -• ‘‘ 『.DustanotherreasonforyouhissuisimeratJae'sHardware!tosho(b)If-Modified-Sincefailedrevalidation(b)If-Modified-Sincefailedrevalidation^^ttOxom(2)If-None-Match可以明显看出,“If-Modified-Since”实现重验证主要是通过比较时间来完成的,但是在某些情况下,它并不能十分凑效:。服务器上的文档被后台进程周期性地重写,此时虽然日期发生了变化,但是内容却没有发生任何改变;。虽然服务器上的内容发生了改变,但是却只是一些不太重要的信息,比如说拼写错误等等,这样就导致文 档在客户端重载,显然开销过大;。一些web服务器上很难精确计算出文档的修改日期;。对于实时系统而言(文档修改在很短的时间内完成),显然也显得无能为力。基于以上几点,HTTP规范定义了另外一种方式,即比较文档标签(Entitytags,Etags).它的基本思想是为每一个文档生成一个Etag,它可以是某个序列号、版本号或者检验。同样"If-None-Match”头部是与server端的“Etag”头部是相对应的,这样server端只需要比较标签号就可以判断出客户端缓存中的文档是否是最新的,其处理方式与“If-Modified-Since”类似,下图是服务器与客户端的一种交互情况:GET/announce^htiulHTTP/l^OIf-None-Matchi"v2-6"rag:J\2.6JI ,jEIag:Jlv2d…j HTTP,L。304NotModified ""Sprvprucnfl Date;Wedj03 2002.19:18:23CMTETag:'V2.611Expires:Fii,05】ul2002^05:00:00GMTR畔啪e4, 缓存控制HTTP规范中定义了服务器如何约束、限制客户端缓存的头部,按照优先级分别有:Cache-Control:no-storeCache-Control:no-cacheCache-Control:must-revalidateCache-Control:max-ageExpires(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"头部。must-revalidate头“must-revalidate”头是为了要求缓存在响应用户请求之前一定要先保证缓存中的文档副本是最新的。max-age与Expires头二者均是为了定义文档的过期时间,在客户端处理时,“max-age”均有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织企业人力资源管理的应用考核试卷
- 质量检测服务采购合同
- 续签劳动合同时的单位规定
- 五金产品售后服务体系构建考核试卷
- 矿山生产计划与调度策略考核试卷
- 工艺美术品行业竞争格局分析考核试卷
- 畜牧良种繁殖中微量元素的营养调控考核试卷
- 电子材料在印刷电子技术中的应用考核试卷
- 竹材采运过程中的质量控制考核试卷
- 涂料店铺营销新模式考核试卷
- 【储能】工商业储能业务开发要点及策略分享
- 耐克的人力资源管理
- 经腋窝无充气腔镜甲状腺手术
- 爬升脚手架施工方案
- 偏差行为、卓越一生3.0版
- 2024中国类风湿关节炎诊疗指南
- 专题04 物质结构与性质-2024年高考真题和模拟题化学分类汇编(原卷版)
- 薄膜的形成过程及生长方式课件
- 丁香花培训课件
- 中国普通食物营养成分表(修正版)
- 《外科护理学(第七版)》考试复习题库(浓缩500题)
评论
0/150
提交评论