- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(成本管理)缓存设计详解
低成本的高性能 W 应用解
决方案
网站性能直接影响访问速度,从而影响访问量。实现高性能 Web 应用的重要性是不言而喻
的。性能瓶颈主要体现在高延时、拥塞和服务器负载,专业的解决方法往往成本较高。做好
缓存的设计则可以在控制成本的情况下充分的提高性能。
过去几年中,Web 应用程序已经从简单的 HTML 页面堆积演变成使用各种各样的技术构建高可
扩展性和交互式的富应用程序。设计和开发这类应用程序变得越来越复杂,此外,决策者正
越来越多地寻求构建更丰富的互动功能到这些应用程序中,同时还要保证可维护性和高性能,
但高性能意味着高成本。为了构建提供给最终用户体验的是一个牢固的应用程序,开发人员
需要解决潜在的性能瓶颈。
本文侧重于缓存——它是交付高性能Web 应用程序急需的——也简要介绍一下压缩功能。有
一些公司在生产和销售专门的压缩和性能产品。本文旨在简单介绍在寻求专业产品解决性能
问题之前开发人员可以在客户端和服务器端对Web 应用程序做的一些性能改进。
性能瓶颈
性能瓶颈主要体现在高延时、拥塞和服务器负载。缓存不能完全解决掉这三个问题,但经过
详细的设计考虑,缓存是可以提高性能的 。在服务器端和客户端都缓存内容,据调查,平均
而言,下载HTML 只需要总的用户响应时间的 10-20% ,剩下的80-90%全部用于下载页面中的
其它组成内容,这些组成内容通常包括图像,如公司 logo ,缓存logo 可以有效避免到服务
器的多次往返。在前日51CTO 上发布的加速,加速,再加速:来自 Google 的网站加速技巧
大全中,Google 提到的提升网站速度和性能的低成本技巧中就包括缓存这一条。至于架构设
计方面,则可参考 51CTO 的视频专题:大型网站架构专家谈。
简单地讲,缓存是临时存储。它将数据复制到不同的计算机或不同于原始数据源的位置,有
了正确的配置,访问缓存数据的速度比访问原始数据的速度要快得多,使用缓存数据可以减
小服务器负载和带宽消耗,从最终用户的角度来看就是性能提高了。
图 1 显示了 Internet 如何工作的快速总揽,以及缓存在哪里发生作用。
图 1Internet 上的缓存:这个图显示了常见的请求和检索缓存信息的时机
缓存
正如你在图 1 中所看到的,在服务器和客户端上缓存数据既是可能的也是有效的,图2 显示
了这三个缓存位置的不同视图。
图2 缓存配置:此图显示了三个典型的缓存位置
1 、客户端浏览器缓存:浏览器缓存Web 对象后,可以对重复的请求直接响应,不用再从
Internet 请求数据了。
2 、服务器端转发代理缓存:虽然可能有些变化,但这些缓存位置通常是在最终用户防火墙
里面,可以对请求直接响应,不需要从原始来源请求数据。
3 、服务器端反向代理缓存:也被称为网关或代理缓存,这些缓存服务器的操作代表了客户
的来源服务器,术语 “内容分发网络(CDN )”就是这些反向代理缓存的集合。
你可以缓存任何可能不止一次被请求的对象,但总有一个危险就是缓存的对象很可能变得陈
旧,也就是说,没有准确地反应原始数据。不过可以使用两个参数来控制所有可缓存的对象:
freshness 和 validation 。freshness 和 validation 都可以使用 HTTP 请求和相应组合来进
行确定。
◆Freshness确定某个对象是否可以从缓存中获得,使用 expires 和 cache-control:max-age
头进行控制。
◆Validation 确定某个对象是否已经陈旧,使用 last-modified 和 if-modified-since 头进
行控制。
设计高度缓存的 Web 应用程序
企业级 Web 应用程序既有静态部分又有动态部分,只要进行了正确的设计和架构,都能够实
现静态部分从缓存中获取,动态部分从原始服务器获取,但第一步是确定要缓存什么,图 3
提供了一个指南,可以帮助你确定哪些对象是可缓存,哪些对象是动态的(不可缓存的)。
图3 确定缓存能力:此图提供了某个对象是否应该缓存的指南
应用程序架构在可缓存对象和不可缓存对象之间有一点差异,开发人员应该寻求最大限度的
缓存命中率,同时要避免缓存动态对象。下面是一些最佳实践:
1 、使用缓存控制(cache-control:max-age)和有效期(Expires)头
2 、使用最后修改时间(last-modified)头
3 、检查Web 服务器是否支持 If-Modified-Since
4 、调查为小型站点使用转向代理的可行性,或为大
文档评论(0)