安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 系统文档 > 大规模、高流量互联网站性能调优的22条准则

大规模、高流量互联网站性能调优的22条准则

时间:2014-06-24来源: 作者:点击:
大规模、高流量互联网站性能调优的22条准则[reship] 关于大规模、高流量Web2.0网站性能调优的 14条准则 ,已近成了业界web2.0网站前端优化的准则,国内外也有很多 文章 和 书籍 介绍这些准则。

大规模、高流量互联网站性能调优的22条准则[reship]

关于大规模、高流量Web2.0网站性能调优的14条准则,已近成了业界web2.0网站前端优化的准则,国内外也有很多文章书籍介绍这些准则。14条准则其实是美国雅虎Performance部门这几年的工作成果之一,他们还研究并提出了许多有效的网站性能调优技术。美国Performance团队负责将雅虎产品和应用改进得更快、更好、更有效率。 //copyright AnYun.ORG

//内容来自安云网

//ANYUN.ORG

上周美国Yahoo! Performance部门的技术经理Tenni来到中国雅虎的Office。在Yahoo!之前,Tenni曾在IBM的普适计算(Pervasive Computing)部门工作过,该部门致力于开发高性能的企业移动解决方案。 //内容来自AnYun.ORG

在北京温特莱中心,我负责接待了Tenni,并和她探讨了许多互联网站性能调优方面的问题,收获良多。除了这14条准则,他们最近又提出了8条新的准则。这篇blog的读者则有幸先看到这些准则。注意:转载本文时,请务必注明出处–http://icyriver.net/?p=26

//本文来自安云网

(Tenni Theurer毕业于加利福尼亚大学的计算机科学专业,说点8卦的东西:她告诉我,她母亲很小就从台湾去了美国,但却是一个pure Chinese,非常爱国,每次听到别人说中国在怎么不好,就会很生气。Tenni外表看起来很Chinese,但基本上是一个ABC,中文说得很少。中 午我们吃饭的时候,她指着皮蛋教会了我们,这个叫thousand-year-old eggs。)

//copyright AnYun.ORG

1。Make Fewer HTTP Requests

//安云网,anyun.org

(尽量减少http请求数量) //内容来自安云网

首先面临的一个问题是把所有的 JavaScript 与 CSS 放到一个文件中好呢,还是分割成多个文件 ?

//本文来自安云网

从减少网络请求的角度上考虑, 前者更好,后者差。但是从并行的角度考虑, IE 与 Firefox 默认情况下都只能同时从一个域请求两个资源. 这会在很多情况下给用户带来不良的使用体验–必须所有的文件都下载完毕才可以看到像样的页面. Flickr 采用了折衷的办法–在保持文件数量尽可能少的情况下,把 JavaScript 与 CSS 分成多个子文件. 这在开发上带来了复杂性,但是对性能的收益是巨大的。 //安云网,anyun.org

2。Use a Content Delivery Network //内容来自安云网

(使用CDN)

//本文来自安云网

3。Add an Expires Header //ANYUN.ORG

(在下载的css、js、image组件里增加过期时间) //本文来自安云网

4。Gzip Components //内容来自安云网

(对下载的组件进行压缩) //内容来自安云网

毫无疑问,对站点内容进行压缩是一个比较常用的 Web 优化手段.但是并不一定都能达到理想的效果.原因在于 mod-gzip 模块不但消耗服务器端 CPU 资源,也消耗客户端 CPU 资源. 而且, mod_gzip 压缩文件后创建的临时文件是放到磁盘上的,这也会给磁盘 IO 带来严重的问题. //安云网咨询系统

Flickr 采用的是 Httpd 2.x 以后支持的 mod_deflate 模块.压缩操作都在内存中进行.mod_deflate 在 Httpd 1.x 是不可用的, 不过可以通过创建 RAM 盘的方式来间接提高性能. //内容来自安云网

当然, mod_gzip 到也不是一无是处, 对于预压缩的文件, 还是有好处的. 而且, 采用压缩的时候,也要注意策略. 图片文件压缩就没什么必要了(Flickr 上图像多, 而且压缩得不到什么好处). Flickr 只对JavaScript 和 CSS 进行压缩. mod_gzip 新一点的版本能够自动通过配置 mod_gzip_update_static 选项自动处理 预压缩的文件. Cal 也指出这个特性在一些旧版本的浏览器上会出问题.

//安云网,anyun.org

压缩的另一个主要手段是内容的压缩. 针对 JavaScript 可以进行通过减少注释、合并空格、使用紧凑的语法等小技巧(Google 的所有脚本都非常难读,而且非常紧凑,思想类似).当然,经过这样处理的 JavaScript 可能带了很多括号不容易解析,Flickr 使用了 Dojo Compressor 来构建解析树。Dojo Compressor 开销很低,而且对于最终用户是透明的. JavaScript 的处理方法介绍过,CSS 处理则相对简单.通过简单的正则表达式替换(比如把多个空格替换为一个空格符), 最高可以获得 50% 的压缩比。 //内容来自安云网

5。Put CSS components at the top of the page. //内容来自安云网

(css文件尽可能放在页面的最上面)

//ANYUN.ORG

6。Put JS components as close to the bottom of the page as possible.

//ANYUN.ORG

(js文件尽可能放在页面的最下面)

//copyright AnYun.ORG

7。Avoid CSS Expressions //内容来自安云网

(在css文件中慎用表达式)

//copyright AnYun.ORG

8。Make JavaScript and CSS External //安云网咨询系统

(在外部包含js和css文件)

//安云网,anyun.org

9。Reduce DNS Lookups //copyright AnYun.ORG

(减少请求中域名的解析次数)

//安云网,anyun.org

10。Minify JavaScript //内容来自AnYun.ORG

(js代码压缩)

//内容来自AnYun.ORG

11。Avoid doing redirects. //内容来自安云网

(避免重定向)

//安云网咨询系统

12。Remove Duplicates Scripts

//ANYUN.ORG

(避免请求重复的js文件)

//安云网,anyun.org

13。Configure ETags

//本文来自安云网

(配置好ETag) //安云网,anyun.org

Flickr 的开发者充分利用了 Http 1.1 规范定义的 Etag 与 Last-Modified 机制来提高 Caching 的效率. 值得注意的是,Cal 介绍了一个在负载均衡条件下的 e-Tag 小技巧. 即可以设定 Apache通过文件调整时间与文件大小获得 E-Tag ,而默认情况下, Apache 是通过文件节点获取 e-Tag的。当然,这也不是很完美,因为会影响 if-modified-since 。

//本文来自安云网

但是有的网站的e-Tag,如yahoo,其产生规则是基于节点的。相同的css或js脚本在不同节点服务器上的e-Tag不同,所以如果有n个服务器,那么浏览器获得304应答消息的概率是1/n。

//安云网咨询系统

14。Make Ajax Cacheable //copyright AnYun.ORG

(缓存Ajax请求)

//内容来自安云网

以下几点是新增的准则,还没有正式公布,所以大家要注意,转载本文时,请务必注明出处—http://icyriver.net/?p=26

//copyright AnYun.ORG

15。Flush the Header //内容来自AnYun.ORG

(先发送Header里的信息) //ANYUN.ORG

We improved the page load times by flushing the apache output buffer after the document HEAD was generated.This had two benefits.

//本文来自安云网

First, the HEAD contains SCRIPT and LINK tags for scripts and stylesheets. By flushing the HEAD, those tags are received and parsed by the browser sooner, and in turn the browser starts downloading those components earlier. //内容来自AnYun.ORG

Second, the HEAD is flushed before actually generating the search results. This is a win for any property doing a significant backend computation or especially making one or more backend web service calls.

//copyright AnYun.ORG

16。Split Static Content Across Multiple Hostnames //安云网咨询系统

(把较大的静态文件分割成不同域的请求)

//本文来自安云网

If you have many (10 or more) components downloaded from a single hostname, it might be better to split those across two hostnames.

//安云网咨询系统

17。Reduce the Size of Cookies

//安云网,anyun.org

(不要让Cookie内容过大)

//copyright AnYun.ORG

Reduce the amount of data in the cookie by storing state information on the backend, and abbreviating names and values stored in the cookie. Set expiration dates on your cookies, and make them as short as possible. //本文来自安云网

18。Host Static Content on a Different Top-Level Domain //ANYUN.ORG

(把静态文件放在不同的顶级域名下) //内容来自AnYun.ORG

19。Minify CSS //本文来自安云网

(Css代码压缩)

//内容来自AnYun.ORG

20。Use GET for XHR

//copyright AnYun.ORG

(有XHR时使用GET请求)

//本文来自安云网

Iain Lamb did a deep study of how using POST for XMLHttpRequests is inefficient, especially in IE. His recommendation: “If the amount of data you have to send to the server is small (less than 2k), I suggest you design your webservice / client application to use GET rather than POST。 //本文来自安云网

21。Avoid IFrames //ANYUN.ORG

(尽量避免使用IFrame) //安云网咨询系统

Don’t use SRC (set it via JS instead). Each IFrame takes 20-50ms, even if it contains nothing

//copyright AnYun.ORG

22。Optimize images //内容来自AnYun.ORG

(优化图片)

//内容来自安云网

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容
  • The Debian Administrator’s Handbook,

    The Debian Administrator’s Handbook, 这本书是debian的两个开发者写出...

  • 微信4.0发布,加入朋友圈功能

    今天传说中的微信4.0版本终于发布并且推送了更新,一进入是新...

  • vijos中c的注意事项

    昨天没事发现了一个叫vijos的类似judgeonline的网站,也许是我火星...

  • falcon编译出错问题

    ...

  • 教你破解xp系统administrator权限

    作者:Awolf 首发:AwolfS Security Blog 一.事情起因 那天满头大汗的...

  • Linux环境下UglifyJS安装

    Linux环境下UglifyJS安装 1.1.   安装 Node.js [[email protected] src]# wget http...