- UID
- 468
- UCC
-
- 声望
-
- 好评
-
- 贡献
-
- 最后登录
- 1970-1-1
|
发表于 2007-8-21 18:41:50
|
显示全部楼层
13个加速网站速度的法则 (Google文)
此为Google翻译文,不懂请对照1楼原文
1 :减少http请求
80 %的终端用户响应时间,是用在前端.大部分时间,这是捆绑在下载的所有部件中页:图像,字体,脚本,闪光灯等,减少元件数量,从而降低了一些http请求须提供页面.这是关键,以更快的页面.
一个办法是减少元件数量,在首页,是为了简化网页的设计.但有一种方法建立网页内容更丰富,同时又实现快速响应时间?这里有一些小窍门减少数量的http请求,同时还支持丰富的页面设计.
影像地图结合,将多个图象整合成一个单一的形象.总体规模大约相同,但数量减少http请求加快页.影像地图只工作,如果图像是在毗连的网页,如导航栏.确定座标图像地图可以繁琐和容易出错.
css的小仙是首选方法,为减少一些形象的要求.结合所有的画面在你的页面成为一个单一的形象和使用css的背景图象和背景定位性能展示理想的图像部分.
直列使用图像数据: url方案嵌入到图像数据,在实际的页面.这可以扩大市场规模,你的html文件.结合图像内嵌到你(缓存)样式的是一个方法,以减少http请求,并避免增加大小你的页面.
档案相结合的一个途径,以减少一些http请求结合所有剧本成一个单一脚本,也同样结合所有空格成一个单一样式.它的一个简单的想法,还没有见过广泛采用.十大美国网站的平均7脚本和样式2每页.结合档案更具有挑战性时,脚本和样式不同,从一页页,但如何使这部分你释放的过程,缩短了反应时间.
数量减少http请求,在你的页面是地方做起.这是最重要的方针,为提高业绩首次参观.描述滕尼叛乱的博客浏览器的缓存使用-曝光! , 40-60 % ,每日访客到您的网站来,在同一个空的缓存.令你的网页速度,为这些第一次参观者主要是为了更好的用户体验.
讨论规则1
2 :使用内容配送网络
用户的靠近你的web server已经冲击了反应时间.部署你的内容在多个地理上分散的服务器将会使你的页面加载速度,从用户的角度.但应该要从哪里开始呢?
作为第一步实施地理上分散的内容,并不试图重新web应用工作,在一个分布式网络体系.取决于应用,改变结构可以包括艰巨的任务,如同步会话状态复制和交易数据库服务器的位置. Attempts to reduce the distance between users and your content could be delayed by, or never pass, this application architecture step.
记得80-90 %的终端用户响应时间都花在下载的所有部件中页:图像,字体,脚本,闪光灯等,这是表现金科玉律,如上重要性前端性能.而非起点与艰巨的任务,重新规划你的应用架构,它的,不如先驱散你的静态内容.这不仅实现了较大的下降响应时间,但它的容易,这应该归功于内容传送网络.
内容分发网络(币)是一个集网络服务器分布在多个地点,以提供内容更有效地给用户.服务器选定内容提供给特定的用户通常是基于衡量网络接近.举例来说,服务器最少啤酒花网络或服务器与最快的反应时间是雀屏中选.
一些大型互联网公司自己的亲人,但它的成本效益,用一个币服务提供商,如akamai技术,镜像互联网,或曝光网络.创业公司和私人网址,成本上cdn服务可以望而却步,但由于你的目标观众愈大,并成为更具有全球性,一个币,要做到快速反应时间.雅虎!物业感动静态内容过自己的网络应用服务器上cdn改善终端用户响应时间由20 %或以上.切换到欧元是一个比较容易的代码改变,将大大提高速度,你的网站.
讨论规则2
3 :加满头
网页设计越来越富裕,这意味着更多的脚本,样式,图片和flash在首页.第一次来到你的页面可能要作出一些http请求,但用头届满时,你使这些组件cacheable .这样做可以避免不必要的http请求,对以后的页面浏览量.截至头是最常用的图像,但他们应该用在所有组成部分,包括脚本,样式和闪存组件.
浏览器(和代理人)使用一个缓存,以减少数量和规模上的http请求,使网页的加载速度.网络服务器用满箱http响应告诉客户多久的一个组成部分,可缓存.这是一个遥远的未来只剩头,告诉浏览器这种反应将不会因循,直到2010年4月15日.
截至:周四, 2010年4月15日格林尼20:00:00
如果你的服务器是apache ,用exiresdefault指令集到期相对当前日期.这个例子的expiresdefault指令规定日期届满10年,从时间的请求.
expiresdefault通道"再加上10年"
记住,如果你使用一个遥远的未来只剩头,你要改变组件的文件时成分的变化.雅虎!我们常走这一步的一部分,构建过程:一个版本是嵌入在组件的文件,例如yahoo_2.0.6.js .
用一个遥远的未来只剩头影响页面浏览量只有当用户已经访问你的站点.它没有对一些http请求的,当用户访问你的网站,对于首次和浏览器的缓存是空的.这方面的影响,业绩改善依赖,因此,如何对用户往往打你的页面与催芽缓存. ( "引缓存"已经包含了所有的部件都在页) .我们衡量这个在雅虎!发现页数与催芽缓存75-85 % .用一个遥远的未来只剩头,你的数目增加组件缓存由浏览再用其后页面浏览量发送单字节以上的用户的互联网连接.
讨论第3
4 : gzip的部件
时间需转让一个http请求和响应整个网络可大大降低所作的决定前端工程师.它的真实,终端用户的带宽,速度,互联网服务提供商,靠近连接交换点等,都是无法控制的开发团队.但还有其他变数影响响应时间.压缩缩短反应时间,缩小http响应.
开始http/1.1标准,网上客户在表示支持压缩与接受编码头在http请求.
接受编码: gzip ,可以嚣张
如果网络服务器没有看到这个头在请求中,它可以压缩脉冲响应方法之一,所列举的客户.网络服务器通知该网站的客户通过这一内容编码头中的反应.
内容编码:一个gzip
gzip的,是最受欢迎和最有效的压缩方法,在这个时候.它是由gnu项目和规范化的rfc 1952 .只有其它的压缩格式,你可能看到的是嚣张,但它的效果较差,并不受欢迎.
gzipping普遍降低反应大小约70 % .大约90 % ,今天的互联网流量穿越浏览器声称支持gzip .如果你使用apache ,模块配置一个gzip取决于你的版本: 1.3阿帕奇利用mod_gzip ,而阿帕奇2.x mod_deflate都利用.
已知有问题,与浏览器及代理人可能造成错配的是什么浏览器的期望和要求是什么,它得到关于压缩内容.幸运的是,这些优势的情况下逐渐减少,由于使用旧的浏览器脱落. apache模块帮忙添加适当的反应不同,自动头.
服务器选择什么gzip的基于文件类型,但通常都过于有限,什么都得压缩.大多数网站gzip的,他们的html文件.它的,也值得gzip的脚本和样式,但在许多网站上放过这个机会.事实上,它的有价值压缩文本任何反应,包括xml和对应.形象和pdf文件不应该经过gzip ,因为他们已经被压缩.试图gzip的,他们不仅浪费cpu的,但可能会增加文件的大小.
gzipping很多类型的文件可能是一个简单的方法来减轻体重页并加速用户体验.
讨论第4
5 :把css的大楼顶部
而研究表现在雅虎!我们发现,字体移动到文件头,使页面加载更快.这是因为把空格中头部,让网页提供循序渐进的方式进行.
前端工程师关心的表现,希望有一页逐步负荷;也就是说,我们想要浏览器显示的内容,不管它尽快.这是特别重要的页面了很多内容和用户对慢上网.必须给用户提供视觉反馈的,如进度指标,已很好地研究和记载.我们遇到的html网页是时代进步的指标!当浏览器加载逐步页头,导航栏,标识上部,等均担任视觉反馈,为用户谁是等待页面.这样就提高了整体用户体验.
问题是把空格附近的底部文件是禁止进绘制许多浏览器,包括internet explorer .浏览座渲染,以避免过重的内容页,如果他们改变风格.用户是看贴一张白页. firefox并不块渲染,即当样式做装载它的内容可能在页面将要重写,以致中的[ url = http://developer.yahoo.com/performance/ % 20http : / / weblogs.mozillazine.org/hyatt/archives/2004_05.html # 005496 ]闪光unstyled内容[ / url ]今天的问题.
html源规范清楚说明,样式都将被列入主管页说: "不像, [链接]可能仅出现在头部的第一个文件,虽然它可能出现了多次"没有替代品,空白的白幕或闪光unstyled内容,是值得冒险.最佳解决方案是遵循规范的html和负载你的样式文件头.
讨论第5
6 :谨剧本底部
第5叙述样式附近页底部逐步禁止令,以及如何迁移到文件头,消除这个问题.剧本(外部javascript文件)的构成类似问题,但解决问题刚好相反:它的好剧本动议,从上层为低,在页越好.原因之一是使进绘制,但另一个原因是,以实现更大的并行下载.
与样式,逐步使阻塞,直到所有的样式都被下载.这就是为什么最好的动议样式到文件头,因此,他们首先下载和渲染是不能阻挡的.剧本的,渐进渲染是阻断所有内容如下脚本.移动剧本那样低下页可能意味着有更多的内容,上面的脚本变得越快.
第二个问题所造成的脚本块并行下载. http/1.1规范显示浏览下载,没有两个以上元件并联每个主机.如果您为您服务形象,从多个主机,你可以得到两个以上的下载发生在平行. (一凯伊internet explorer下载超过100图像平行) .而剧本下载的,但浏览器不会启动任何其它的下载,甚至在不同的主机.
在某些情况下,这并不容易动议脚本的底部.举例说,假如该脚本使用document.write插入部分的页的内容,可以不迁较低页.也可能存在问题的范围.在许多情况下,有办法要绕过这些情况.
另一种建议是,也常常是为了推迟使用脚本.推迟的属性显示脚本不包含document.write ,是一个线索浏览他们可以继续绘制.不幸的是, firefox不支持延迟属性.在ie脚本可能会延迟,但并没有像预期的.如果脚本可以推迟,也可以移到页面底部.这将使你的网页加载速度.
讨论第6
7 :避免css的表现
css的词句,是一个强有力的(危险)的方式来设定css的动态性能.他们支持在ie开始,第5版.为例,底色可以设定为候补每小时用css的词句.
背景颜色:表达( (新日期( ) ) . gethours ( ) % 2 ? " # b8d4ff " : " # f08a00 " ) ;
所示,在这里,表达方法接受一个javascript表达式. 184属性设置结果评价javascript的表达.表达方法,是忽略了其他浏览器,所以这是有益的性能定在ie需要创造一个体验跨浏览器.
问题与表现,是他们的评价更加频繁,比大多数人预期的.他们不仅评价时,首页是译作,并加粗,而且当页面滚动,甚至当用户移动鼠标多页.加上柜184表达,使我们掌握什么时候以及一个css的表现作了评价.鼠标移页面周围容易产生超过10000评价.
一个办法是减少多少次你的css表现的评价是使用一次性的词句,并在第一时间表达,是评价套风格财产明示值,它取代了184的表达.如果风格财产必须是一套动态的整个生命的一页,利用事件处理不是css的表现是另一种做法.如果你必须使用css的表情,记住,他们可评估几千倍,并可能影响业绩,你的页面.
讨论第7
8 : javascript , css等外部
许多这些表现规则处理如何与外部元件的管理.然而,在这些因素出现,你要问一个更基本的问题:应该javascript , css等载入外部档案,或者在inlined页本身?
使用外部文件,在现实世界中普遍产生更快,因为页的javascript和css文件缓存由浏览器. javascript , css等都是inlined在html文件下载得到每次html文件要求.这一数量减少http请求的,有需要的,但增幅大小html文档.就另一方面来说,假如javascript , css等都是在外部文件缓存由浏览器,大小html文档是减少的数目增加http请求.
关键因素,则是9560万,其中外来的javascript和css组件缓存相对人数html文档的要求.这一因素,尽管很难量化,可衡量,用不同的衡量标准.如果用户对你的网站有多个页面的看法,每一届,你的许多页面再使用同样的脚本和样式,有一个更大的潜力,有利于从外部存储的文件.
许多网站属于夹在中间的这些度量.这些性能,最好的办法通常是部署javascript , css等外部文件.唯一的例外,我见过那里递归是最好的是网页,如雅虎!美国头版( http://www.yahoo.com )和我的雅虎! ( http://my.yahoo.com ) .主页,有几个(也许只有一个) ,网页浏览,每一届可能发觉递归javascript , css等成果更快终端用户响应时间.
为头版,通常第一页有很多意见,有很多技术的杠杆减少http请求递归规定,以及缓存取得的收益,通过使用外部档案.其中一种技巧是直列javascript , css等,在头版,但动态下载外部文件后,页面已装载完毕.随后页面将参考外部文件应该已经在浏览器的缓存.
讨论第8
9 :减少域名查找
域名系统( dns )映射到主机地址,就像地图电话簿的人的姓名,电话号码.当你输入www.yahoo.com到你的浏览器,一个域名解析器接触,由浏览器返回服务器的ip地址.域名是有代价的.它通常需要20-120毫秒域名解析为ip地址的某个主机名.浏览下载不了的事情,从这个主机,直到域名解析完成.
域名查找缓存更好的表现.这个缓存可以发生在一个特殊的缓存服务器,由用户的互联网或局域网,但也存在着缓存发生对个人用户的电脑.域名信息依然在操作系统中的dns缓存( "域名服务客户" ,对微软视窗) .大多数浏览器都有自己的高速缓存,分别从操作系统的缓存.只要浏览器保存的dns记录在其自己的高速缓存,它并不理会操作系统的请求纪录.
因特网探索者暗藏域名查找, 30分钟,默认情况下,指定由夹注册表设置.火狐暗藏域名查找,一分钟后,控制由network.dnscacheexpiration配置设置. ( fasterfox变化,这1个小时) .
当客户端的dns缓存是空的(无论浏览器和操作系统) ,数字域名系统查找数目相等独特的主机中的网页.这包括主机用在网页的url ,图片,脚本文件,样式,闪光物体等,减少了一些独特的主机数量减少域名查找.
减少一些独特的主机有可能减少金额并行下载的是发生在该页面.避免域名查找削减响应时间,但减少并行下载可能会增加响应时间.我的方针是,分裂这些组件全国至少有两个,但不超过4个主机.这一成果是一个很好的妥协之间减少域名查找,并允许高度并行下载.
讨论第9
10 :缩小了的javascript
微细的做法是去除不必要的字符码,以减少其体积,从而提高负荷倍.当典金评论全部拆除,以及不需要空白字符(空间,换行符,和tab ) .在本案的javascript ,这样就提高了反应时间表现,因为大小的下载文件,是减少.最常用的工具,为缩小javascript代码代码的[ url = ] jsmin [ / url ]今天,发达的道格拉斯克罗克福德,一位小伙子雅虎! .
迷惑的是另一种优化,可用于源代码.像缩,它消除了评论和白色空间,但它也客栈守则.一部分munging ,函数和变量的名字转换成小串,使代码更加紧凑以及难以阅读.这是典型的做更难逆向代码.但munging可以帮助表现,因为这样做可以减少代码大小,不光是达到缩.工具-选择是那么明确,在该区javascript的迷惑.试压缩机( shrinksafe )是一个我所见过用最.
缩是一种安全,使用相当简单的过程.迷惑,另一方面,是比较复杂的,因此更容易产生缺陷由于迷惑了自己的一步.困惑,还需要修改你的代码,以显示api函数和其它符号,不应该munged .它也使得更难调试你的代码生产.虽然我从来没有见过的问题,介绍了从微细化,我看到有缺陷所造成的混乱.在调查的十大美国网站,缩达到21 %的面积减少为25 %混乱.虽然困惑,有较高的尺寸缩小,我建议缩小javascript代码,因为在降低风险和维护费用.
除了缩小对外剧本,剧本inlined座可以,也应该是金.即使你gzip的脚本中所描述的那样在第4 ,缩小他们仍会缩小,由百分之五或以上.由于使用和大小的javascript增加,因此将节省所得缩小你的javascript代码.
讨论第10条
11 :避免重定向
重定向通过使用301和302状态码.这里的一个例子http头一个301回应:
http/1.1标准301永久性搬到
地点: http://example.com/newuri
内容类型:文本/的html
浏览器会自动把用户该url指定的位置.所有必要的信息重定向是在头.身体的反应是典型的空洞.尽管他们的名字,既不是301或302的回应是缓存在实践中,如果没有额外的头信息,如到期或缓存控制,表明它应该的.元刷新标签和javascript等方式直接向用户不同的url ,但如果你必须做一个调整,首选方法是用标准的3xx http状态码,主要是为了确保后退按钮工程是否正确.
主要的是要记住骗至慢的用户体验.插入一个重定向至用户和html文件拖延一切页面因为没有在首页可以做出任何组件可以开始下载到html文件已经到来.
其中最浪费重定向发生频繁和网络开发者通常不知道有这回事.它发生在一个落后的斜线( / )失踪,从一个url ,否则应该有一个.譬如去http://astrology.yahoo.com/astrology结果,在301名回应含有重定向到http://astrology.yahoo.com/astrology/ (公告补充耙削减) .这是固定在apache使用别名或mod_rewrite ,或者directoryslash指令,如果你使用apache的默契.
连接旧网站的一个新的是另一种常用的重定向.其他设施包括连接不同部位的一个网站,并引导用户基于某些条件(类型的浏览器类型,用户帐号等等) .使用重定向来连接两个网站是简单,几乎不需要额外的编码.虽然使用重定向在这种情况下降低复杂性,为开发商,它降低了用户的体验.选择这种使用重定向包括使用化名和mod_rewrite如果两个代码路径都设在同一台服务器.如果一个域名变化,是导致使用重定向,另一种是创造的cname ( dns的纪录,创造了一个别名指向一个域名为另一种) ,结合别名或mod_rewrite .
讨论第11条
12 :删除重复的脚本
痛业绩,包括同样的javascript文件两次在一页.这并非不寻常,正如你想象的.审查的十大美国网站显示,其中两个含有重复脚本.主要有两个因素增加了赔率,剧本被重复在一个单一的网页:团队的规模和数量上的字体.当它发生,重复伤害剧本演出造成不必要的http请求和浪费的javascript执行.
不必要http请求发生在ie ,而不是才怪呢.在internet explorer中,如果一个外部脚本包含两次,是不是cacheable ,它生成两个http请求,在页面加载.即使脚本cacheable额外http请求发生时,用户刷新页面.
除了发电浪费http请求的,时间是浪费评价脚本成倍增长.这多余的javascript处决发生在firefox和ie浏览器,不论是剧本cacheable .
方法之一,以避免无意中包括同一脚本两次,是落实脚本管理模块在你的模板体系.典型的方法包括一个脚本是用脚本标签,在你的html网页.
剧本式= "文/ javascript的而" src = " menu_1.0.17.js " > < /剧本>
另一种在php将创建一个称为功能insertscript .
< ? php insertscript ( " menu.js " ) ? >
此外,为了防止同一脚本被插入多次,这个功能,可以处理其他问题的剧本,如扶养检查,并加入版本号码脚本文件,以支持对遥远的未来只剩头.
讨论第12条
13 :配置etags
实体标签( etags )是一种很好的机制,网络服务器和浏览器的使用,以确定是否构成在浏览器的缓存赛事之一,起源服务器. (一个"实体"是另一个字就是我一直在呼吁的"分量" :图像,文字,字体等) , etags加上提供一种机制,为验证实体,是一个更灵活,比去年改造日期.一个的etag是一串的独特识别特定版本的一个组成部分.唯一形式限制是字符串引用.起源服务器指明组件的使用的etag的etag响应头.
http/1.1标准200好
最后的修饰:周二, 2006年12月12日格林威治时间3时03分59秒
的etag : " 10c24bc - 4ab - 457e1c1f "
内容长度: 12195
稍后,如果浏览器已经验证的一个组成部分,它使用了,如果无的匹配头合格的etag回起源服务器.如果etags比赛中,一个304状态码返回减少回应12195个字节这个例子.
得到/我/ yahoo.gif http/1.1标准
主持人: us.yimg.com
如果修饰的,因为:周二, 2006年12月12日格林威治时间3时03分59秒
如果无的匹配: " 10c24bc - 4ab - 457e1c1f "
304 http/1.1标准不修饰
问题etags是他们通常的建筑用属性,使它们特有的服务器主办的一个网站. etags不会比赛中,当浏览器获得的原始成分,从一台服务器,后来试图核实这一成分对不同的服务器,这种情况是很常见的网站上使用了服务器集群处理请求.默认情况下,双方的apache和iis嵌入数据的etag大幅降低赔率有效性试验成功对网站多台服务器.
的etag格式阿帕奇1.3和2.x的inode是尺寸时钟.虽然某一文件可能住在同一目录跨越多台服务器,并有相同的文件大小,权限,时间戳等,它的inode不同,是从一台服务器到另一阶段.
iis 5.0和6.0也有类似问题etags .格式etags对非法入境者是filetimestamp : changenumber .一changenumber是一个计数器用来跟踪配置更改为非法入境者.它不可能因为changenumber是同各iis服务器背后的一个网站.
最终结果是生成etags使用apache和iis完全相同的成分,不会配合,从一个服务器到另一个.如果etags不相匹配,用户不接受小,快304反应etags设计;相反,他们将得到一个200的正常反应,随着各项数据的组成部分.如果你请客,你的网站就只是一台服务器,这不是一个问题.但如果你有多个服务器接待你的网站,你使用apache或iis与默认的etag配置,你的用户越慢页面,你的服务器有较高的负荷,你消耗更多的带宽,而代理人总是一件'笔缓存内容,你的效率.即使你已经组成了一个遥远的未来只剩头,有条件get请求还是每当用户点击刷新或更新.
如果你不利用灵活的验证模型etags提供,它的好,只是移除的etag共有.最后修饰头验证基于组件的时间戳.取下的etag面积减少http头均反应和随后的请求.微软的这一支持,文章描述如何去除etags .在apache中,这样做的,只需添加下面一行到你的apache配置文件:
无fileetag |
评分
-
查看全部评分
|