Yahoo Yslow 团队提高 Web 性能的 14 条法则
YahooYslow团队提高Web性能的14条法则
01.MakeFewerHTTPRequests
减少少HTTP请求(整合多个分开的CSS/JavaScript)
02.UseaContentDeliveryNetwork
使用CDN
03.AddanExpiresHeader
加入ExpiresHeader(过期时间标记头)到Image、CSS、JavaScript档案里
04.GzipComponents
页面使用gzip压缩HTML、JavaScript、StyleSheet、XML、JSON,但切记“不要压缩Images,PDF档案”
05.PutCSSattheTop
样式代码css置于页面顶部head标签中,使用<LINK>标签,不要使用@import语法。
避免样式改变引起的页面元素重绘。
link是一个html标签,而@import是一个css标签,
06.MoveScriptstotheBottom
脚本语言script置于页面底部最下方</body>之前,所有在JavaScript加载以下的HTML在JS还没读完前,都不会显示画面。
把JavaScript的代码都放在onload执行。
07.AvoidCSSExpressions
避免使用CSSexpressions,可能这段expression会在每一次mousemove、resize、scroll、keypress时执行,使用js来完成相应的功能。
expression是CSS中的行为,IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javascript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javascript表达式,CSS属性的值等于Javascript表达式计算的结果。
微软IE官方博客报道:IE8标准模式下将不再支持CSS的expression功能。
08.MakeJavaScriptandCSSExternal
JS跟CSS独立出文件比较好,首页除外。
使用Post-onloaddownload技巧(downloadexternalfilesafteronload)
window.onload=downloadComponents;
functiondownloadComponents(){
varelem=document.createElement("script");
elem.src="http://.../file1.js";
document.body.appendChild(elem);
...
}
在Server-side判断使用者Browser是否有设定Cookie["hasPostOnloadDownload"],
若没有,就使用post-onloaddownload动态下载CSS&JS;
若有用,就直接用<scriptsrc="xxxx.js"></script>下载,Browser会抓取Cache的版本。
09.ReduceDNSLookups
在一个页面中,不要使用过多地不同域名解析,建议不要超过2-4个,不然会降低页面载入速度。
开启Keep-Alive支援,在pv不是很高时可以加快客户访问的速度,因为不需要三次握手,pv>120万时就不要使用了,有可能导致服务器一直TIMEWAIT而无响应。
10.MinifyJavaScript
减小Javascript。可以使用工具减少代码量,可以被浏览器更快的下载。
相关工具:
jsmin:http://crockford.com/javascript/jsmin
下载后更名成jsmin.zip解压缩出jsmin.exe即可执行:jsmin.exe<input.js>output.js(注意:所有UTF-8编码的js档会变成ANSIasUTF-8编码)
dojocompressor:http://dojotoolkit.org/docs/shrinksafe
11.AvoidRedirects
避免重定向:
网址若省略文件时,最后面一定要加上/结尾
追查Log档查看LogReferer。
12.RemoveDuplicateScripts
移出代码中重复的脚本语言。
13.ConfigureETags(TurnoffETags)
Etags是Web服务器返回的实体的唯一标识,主要应用在有条件的Get请求中,如果ETags不匹配,就不能发送304码。
对于服务器之间一个单独的实体的ETag总是不同的,对于服务器多余一台机器的Site,很少返回304状态码,所以多台前端服务器时要关闭ETags选项。
ETagformat:
Apache:ETag:inode-size-timestamp
IIS:ETag:Filetimestamp:ChangeNumber
14.MakeAjaxCacheable
XHR、JSON、iframe、动态脚本都是可以被缓存,精简和压缩的,这些不会经常变动的内容,可以缓存它,将最后修改时间标记在URL中。
提高Web性能的14条法则(详细版)
http://www.cnblogs.com/csharp/archive/2008/08/27/high_performance_web_sites_14_rules.html
CSS中的行为——expression
http://www.blueidea.com/tech/site/2006/3705.asp
IE8将不再支持CSS中的expression
http://www.cnblogs.com/JustinYoung/archive/2008/10/17/ending-expressions.html
Dojo的压缩
http://pigdogyourmother.ycool.com/post.1684294.html
提高基于Dojo的Web2.0应用程序的性能
http://www.ibm.com/developerworks/cn/web/wa-lo-dojo-perf/
常见的HTTP状态代码及其原因
http://leeqianjun.javaeye.com/blog/266866
使用ETags减少Web应用带宽和负载
http://www.infoq.com/cn/articles/etags
http://liudaoru.javaeye.com/blog/211975
相关推荐
background-color: blue;background-color: yellow;<input type="button" value="变蓝" @click="changeColorT