缓存设计详解:低成本的高性能Web应用解决方案_第1页
缓存设计详解:低成本的高性能Web应用解决方案_第2页
缓存设计详解:低成本的高性能Web应用解决方案_第3页
缓存设计详解:低成本的高性能Web应用解决方案_第4页
缓存设计详解:低成本的高性能Web应用解决方案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.:.;网站性能直接影响访问速度,从而影响访问量。实现高性能Web运用的重要性是不言而喻的。性能瓶颈主要表达在高延时、拥塞和效力器负载,专业的处理方法往往本钱较高。做好缓存的设计那么可以在控制本钱的情况下充分的提高性能。过去几年中,Web运用程序曾经从简单的HTML页面堆积演化成运用各种各样的技术构建高可扩展性和交互式的富运用程序。设计和开发这类运用程序变得越来越复杂,此外,决策者正越来越多地寻求构建更丰富的互动功能到这些运用程序中,同时还要保证可维护性和高性能,但高性能意味着高本钱。为了构建提供应最终用户体验的是一个结实的运用程序,开发人员需求处理潜在的性能瓶颈。本文偏重于缓存它是交付高性能

2、Web运用程序急需的也简要引见一下紧缩功能。有一些公司在消费和销售专门的紧缩和性能产品。本文旨在简单引见在寻求专业产品处理性能问题之前开发人员可以在客户端和效力器端对Web运用程序做的一些性能改良。性能瓶颈性能瓶颈主要表达在高延时、拥塞和效力器负载。缓存不能完全处理掉这三个问题,但经过详细的设计思索,缓存是可以提高性能的。在效力器端和客户端都缓存内容,据调查,平均而言,下载HTML只需求总的用户呼应时间的10-20%,剩下的80-90%全部用于下载页面中的其它组成内容,这些组成内容通常包括图像,如公司logo,缓存logo可以有效防止到效力器的多次往返。在前日51CTO上发布的 HYPERLI

3、NK developer.51cto/art/202106/132210.htm t _blank 加速,加速,再加速:Google的网站加速技巧大全中,Google提到的提升网站速度和性能的低本钱技巧中就包括缓存这一条。至于架构设计方面,那么可参考51CTO的 HYPERLINK developer.51cto/developer/webarc/ 视频专题:大型网站架构专家谈。简单地讲,缓存是暂时存储。它将数据复制到不同的计算机或不同于原始数据源的位置,有了正确的配置,访问缓存数据的速度比访问原始数据的速度要快得多,运用缓存数据可以减小效力器负载和带宽耗费,从最终用户的角度来看就是性能提高了

4、。图1显示了Internet如何任务的快速总揽,以及缓存在哪里发生作用。图 1 Internet上的缓存:这个图显示了常见的恳求和检索缓存信息的时机缓存正如他在图1中所看到的,在效力器和客户端上缓存数据既是能够的也是有效的,图2显示了这三个缓存位置的不同视图。图 2 缓存配置:此图显示了三个典型的缓存位置1、客户端阅读器缓存:阅读器缓存Web对象后,可以对反复的恳求直接呼应,不用再从Internet恳求数据了。2、效力器端转发代理缓存:虽然能够有些变化,但这些缓存位置通常是在最终用户防火墙里面,可以对恳求直接呼应,不需求从原始来源恳求数据。3、效力器端反向代理缓存:也被称为网关或代理缓存,这些

5、缓存效力器的操作代表了客户的来源效力器,术语“内容分发网络CDN就是这些反向代理缓存的集合。他可以缓存任何能够不止一次被恳求的对象,但总有一个危险就是缓存的对象很能够变得陈旧,也就是说,没有准确地反响原始数据。不过可以运用两个参数来控制一切可缓存的对象:freshness和validation。freshness和validation都可以运用HTTP恳求和相应组合来进展确定。Freshness确定某个对象能否可以从缓存中获得,运用expires和cache-control:max-age头进展控制。Validation确定某个对象能否曾经陈旧,运用last-modified和if-modif

6、ied-since头进展控制。设计高度缓存的Web运用程序企业级Web运用程序既有静态部分又有动态部分,只需进展了正确的设计和架构,都可以实现静态部分从缓存中获取,动态部分从原始效力器获取,但第一步是确定要缓存什么,图3提供了一个指南,可以协助 他确定哪些对象是可缓存,哪些对象是动态的不可缓存的。图 3 确定缓存才干:此图提供了某个对象能否应该缓存的指南运用程序架构在可缓存对象和不可缓存对象之间有一点差别,开发人员应该寻求最大限制的缓存命中率,同时要防止缓存动态对象。下面是一些最正确实际:1、运用缓存控制cache-control:max-age和有效期Expires头2、运用最后修正时间la

7、st-modified头3、检查Web效力器能否支持If-Modified-Since4、调查为小型站点运用转向代理的可行性,或为大型企业网站从CDN厂家获得专业人员的协助 5、根据网站的可扩展性思索是运用数据中心还是托管6、本人动手编码经常需求大量的时间和精神,根据站点的规模,可以思索采用开源缓存方法,如运用Squid作为代理效力器7、为文件下载明确运用混合缓存机制8、确保那些无用户/输入依赖的动态事务可以获得缓存,为不同对象创建缓存映像可以协助 将可缓存对象和不可缓存对象隔分开来9、小心完全忽略缓存头的内容管理系统CMS为缓存运用头(Header)本节覆盖了为缓存目的最有用的头。控制缓存在

8、HTTP 1.1规范中,效力器应该为缓存控制头发送一个无缓存呼应,以指出内容不应该被缓存,客户端和效力器端都应该遵守这个头信息,以防止头中曾经声明了的动态内容,大多数开发言语都支持运用这个头信息控制呼应头值。另一方面,他可以为cache-control头前往一个public效力器端应对来允许缓存即使没有cache-control头也可以指出对象是可以缓存的,cache-control头的值为private是一个特殊情况,表示阅读器能够会在本地缓存对象,但代理效力器不会缓存它。图4中的恳求呼应任务流显示了Google如何经过cache-control头通知代理效力器不要缓存的。图 4 停顿代理效

9、力器缓存:恳求-应对流显示效力器前往private阻止代理效力器缓存最后,效力器运用expires应对时包括了一个表示有效期的日期/时间戳,直到有效期满之前阅读器都可以缓存中的对象。如图5所示。图 5 过期内容:Google的Gmail效力器前往一个expires头,包括缓存页面的过期日期和时间这一点他可以验证,Gmail允许阅读器缓存Gmail主页,直到expires头中明确指定的时间到了为止。运用Last-Modified 头阅读器运用这个头信息来确定缓存对象生存期的有效性,阅读器恳求这个对象时,效力器运用一个包含该对象最后修正时间的时间戳的Last-Modified 头进展呼应,当用户下

10、次恳求一样的对象时,假设当前的时间戳超出了对象的运用期限,或者用户是经过刷新方式恳求该页面的,阅读器会向效力器发送一个if_modified_since恳求确定对象能否发生了变化,假设对象确实发生了变化,阅读器就发送一个完好的GET恳求以获取新的对象并将其再次缓存起来,否那么,阅读器就从它的缓存中提取对象,并更新对象的last-modified值。图6显示了一个任务实例。图 6 最后修正时间:last-modified时间戳让阅读器确定是运用本地缓存内容还是重新恳求内容举一个例子,假设阅读器在恳求 HYPERLINK yahoo/ yahoo时,效力器运用last-modified时间戳进展呼

11、应,和运用if-modified-since头进展呼应参考图7时对比一下,看行为有何不同。图 7 检查修正:经过发送if-modified-since头,效力器将会运用一个表示自时间戳指定时间以来能否发生了变化的值进展呼应在图7中,阅读器运用if-modified-since头发送一个恳求,效力器运用304代码进展呼应,表示阅读器可以运用缓存,不用发起一个完好的GET恳求。为了全面了解这些头信息的效果,最好的方法是他本人动手实验一翻,运用各种不同的头信息组合,并察看它们的行为,分析头信息的一个好工具是Wfetch。本人动手的方法正如前面给出的建议,本人动手DIY的方法并不总是捷径,专门提供CD

12、N加速的产品和处理方案可以满足不同类型的需求。但假设他要开发的是一个内部运用的产品,可以提供协助 的能够只需Squid了,Squid被用作许多产品的一个组成部分,许多ISP也在运用它。例如,在Java运用程序中,Squid可以被用作Tomcat效力器的代理,Squid提供的不仅仅是HTTP缓存,但关于它的完好引见曾经超出了本文的范围,请读者自行搜索相关文章,可以在 HYPERLINK /wiki/Cache_strategy Wikimedia看到另一个运用Squid的例子。HTTP紧缩缓存仅仅是提高Web运用程序性能的方法之一,紧缩是另一个关键方法,HTTP紧缩在内容发送到客户端之前将其紧缩,在客户端和效力器端都有紧缩功能,当效力器交付的是紧缩内容时,由阅读器进展解压,这样可以节约珍贵的带宽,减少本钱和提高呼应时间。阅读器运用值为gzip的accept-encodingtypically头声称它们支持紧缩,效力器运用content-encoding头指定应对数据的编码,例如,假设运用的是gzip格式进展紧缩,效力器应该运用值为gzip的content-encodin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论