﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-BearRui(AK-47) 的Blog-随笔分类-高性能WEB开发</title><link>http://www.blogjava.net/BearRui/category/44602.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 19 Oct 2010 12:07:45 GMT</lastBuildDate><pubDate>Tue, 19 Oct 2010 12:07:45 GMT</pubDate><ttl>60</ttl><item><title>了解CSS的查找匹配原理，让CSS更简洁、高效</title><link>http://www.blogjava.net/BearRui/archive/2010/06/07/efficient_css.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Mon, 07 Jun 2010 14:53:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/06/07/efficient_css.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/323000.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/06/07/efficient_css.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/323000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/323000.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用了这么多年的CSS，现在才明白CSS的真正匹配原理，不知道你是否也跟我一样？看1个简单的CSS：DIV#divBox p span.red{color:red;}，按习惯我们对这个CSS 的理解是，浏览器先查找id为divBox的DIV元素，当找到后，再找其下的所有p元素，然后再查找所有span元素，当发现有span的class为red的时候，就应用该style。多么简单易懂的原理，可是这个理解却是完完全全相反、错误的&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/06/07/efficient_css.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/323000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-06-07 22:53 <a href="http://www.blogjava.net/BearRui/archive/2010/06/07/efficient_css.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发(11) - flush让页面分块,逐步呈现</title><link>http://www.blogjava.net/BearRui/archive/2010/05/19/flush_chunk_encoding.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Wed, 19 May 2010 14:38:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/05/19/flush_chunk_encoding.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/321369.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/05/19/flush_chunk_encoding.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/321369.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/321369.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在处理比较耗时的请求的时候，我们总希望先让用户先看到部分内容，让用户知道系统正在进行处理，而不是无响应。一般大家在处理这种情况，都使用ajax，先把html输出到客户端，然后再用ajax取加载比较耗时的资源。用ajax麻烦的地方是增加了请求数，而且需要写额外的js代码、和js调用的请求接口。针对这种情况，还有一种处理方法，就是让response分块编码进行传输。response分块编码，可以先传输一部分不需要处理的html代码到客户端，等其他耗时代码执行完毕后再传输另外的html代码。&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/05/19/flush_chunk_encoding.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/321369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-05-19 22:38 <a href="http://www.blogjava.net/BearRui/archive/2010/05/19/flush_chunk_encoding.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WEB高性能开发(10) - 疯狂的HTML压缩</title><link>http://www.blogjava.net/BearRui/archive/2010/05/16/html_compressor.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Sun, 16 May 2010 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/05/16/html_compressor.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/321100.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/05/16/html_compressor.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/321100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/321100.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:   上一篇随笔中网友 skyaspnet 问我如何压缩HTML，当时回答是推荐他使用gzip，后来想想，要是能把所有的html，jsp(aspx)在运行前都压缩成1行未免不是一件好事啊。一般我们启动gzip都比较少对html启动gzip，因为现在的html都是动态的，不会使用浏览器缓存，而启用gzip的话每次请求都需要压缩，会比较消耗服务器资源，对js,css启动gzip比较好是因为js,css都会使用缓存。我个人觉得的压缩html的最大好处就是一本万利，只要写好了一次，以后所有程序都可以使用，不会增加任何额外的开发工作。&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/05/16/html_compressor.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/321100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-05-16 17:16 <a href="http://www.blogjava.net/BearRui/archive/2010/05/16/html_compressor.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>该如何加载google-analytics(或其他第三方)的JS</title><link>http://www.blogjava.net/BearRui/archive/2010/05/13/best_use_google_analytics.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Thu, 13 May 2010 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/05/13/best_use_google_analytics.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/320702.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/05/13/best_use_google_analytics.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/320702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/320702.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很多网站为了获取用户访问网站的统计信息，使用了google-analytics或其他分析网站(下面的讨论中只提google-analytics,简称ga)。注册ga后，ga就会生成一段js脚本，很多人直接把这段js复制到<body>的最后面就完事(包括 博客园、CSDN、BlogJava)。可是ga自动生成的这段JS真的就是最合理的吗？&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/05/13/best_use_google_analytics.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/320702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-05-13 10:10 <a href="http://www.blogjava.net/BearRui/archive/2010/05/13/best_use_google_analytics.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发(8) - 页面呈现、重绘、回流。</title><link>http://www.blogjava.net/BearRui/archive/2010/05/10/web_performance_repaint_relow.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Mon, 10 May 2010 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/05/10/web_performance_repaint_relow.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/320502.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/05/10/web_performance_repaint_relow.html#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/320502.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/320502.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 页面呈现流程<br><br>回流与重绘<br><br>什么操作会引起重绘、回流<br><br>聪明的浏览器<br><br>如何减少回流、重绘<br><br>实例测试&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/05/10/web_performance_repaint_relow.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/320502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-05-10 17:24 <a href="http://www.blogjava.net/BearRui/archive/2010/05/10/web_performance_repaint_relow.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发(7) - JS、CSS的合并、压缩、缓存管理</title><link>http://www.blogjava.net/BearRui/archive/2010/05/04/js_css_merge_compress_cache.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Tue, 04 May 2010 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/05/04/js_css_merge_compress_cache.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/320036.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/05/04/js_css_merge_compress_cache.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/320036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/320036.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本篇文章主要讨论下目前JS,CSS 合并、压缩、缓存管理存在的一些问题，然后分享下自己项目中用到的1个处理方案，并提供1个实例下载。&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/05/04/js_css_merge_compress_cache.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/320036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-05-04 13:28 <a href="http://www.blogjava.net/BearRui/archive/2010/05/04/js_css_merge_compress_cache.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发(6) - web性能测试工具推荐</title><link>http://www.blogjava.net/BearRui/archive/2010/04/28/web_performance_tools.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Wed, 28 Apr 2010 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/04/28/web_performance_tools.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/319590.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/04/28/web_performance_tools.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/319590.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/319590.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: WEB性能测试工具主要分为三种，一种是测试页面资源加载速度的，一种是测试页面加载完毕后页面呈现、JS操作速度的，还有一种是总体上对页面进行评价分析，下面分别对这些工具进行介绍。&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/04/28/web_performance_tools.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/319590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-04-28 12:57 <a href="http://www.blogjava.net/BearRui/archive/2010/04/28/web_performance_tools.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发系列</title><link>http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Mon, 26 Apr 2010 15:55:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/319409.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/319409.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/319409.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       准备写一系列关于高性能WEB开发的日记，主要是跟前端技术相关的(html,http,js,css等)，将自己了解的一些知识做1个总结和记录并分享，希<br><br>望大家能喜欢，也喜欢自己能坚持写下去。当然因个人技术水平有限，写作能力更是非常差，所以如果有什么地方写得不好的，请大家都指点指点。&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/319409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-04-26 23:55 <a href="http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发(5) - 减少请求，响应的数据量</title><link>http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance_reduce_weight.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Mon, 26 Apr 2010 11:53:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance_reduce_weight.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/319408.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance_reduce_weight.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/319408.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/319408.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上一篇文章中说到了 如何减少请求数，这次说说如何减少请求、响应的数据量(即在网络中传输的数据量)，减少传输的数据量不仅仅可以加快页面加载速度，更可以节约服务器带宽，为你剩不少钱。<br>   GZIP压缩<br>   别乱用cookie<br>    妙用204状态&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance_reduce_weight.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/319408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-04-26 19:53 <a href="http://www.blogjava.net/BearRui/archive/2010/04/26/web_performance_reduce_weight.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发 - 为什么要减少请求数，如何减少请求数!</title><link>http://www.blogjava.net/BearRui/archive/2010/04/18/reduce_number_of_request.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Sun, 18 Apr 2010 10:58:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/04/18/reduce_number_of_request.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/318677.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/04/18/reduce_number_of_request.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/318677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/318677.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http请求头的数据量<br>http连接开销<br>如何减少请求数<br>   1. 合并文件<br>   2. 合并图片<br>   3. 把JS、CSS合并到1个文件<br>   4. 使用Image maps<br>   5. data嵌入图片&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/04/18/reduce_number_of_request.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/318677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-04-18 18:58 <a href="http://www.blogjava.net/BearRui/archive/2010/04/18/reduce_number_of_request.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能web开发 - 如何加载JS，JS应该放在什么位置？</title><link>http://www.blogjava.net/BearRui/archive/2010/04/08/web_performance_js_where.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Thu, 08 Apr 2010 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/04/08/web_performance_js_where.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/317724.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/04/08/web_performance_js_where.html#Feedback</comments><slash:comments>32</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/317724.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/317724.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 外部JS的阻塞下载<br /><br>外部js文件应该放在什么位置<br /><br>嵌入JS的阻塞下载<br /><br>嵌入JS导致CSS阻塞加载的问题<br /><br>嵌入JS应该放在什么位置&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/04/08/web_performance_js_where.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/317724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-04-08 16:08 <a href="http://www.blogjava.net/BearRui/archive/2010/04/08/web_performance_js_where.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发 - 图片篇</title><link>http://www.blogjava.net/BearRui/archive/2010/02/22/web_performance_image.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Mon, 22 Feb 2010 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/02/22/web_performance_image.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/313644.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/02/22/web_performance_image.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/313644.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/313644.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、缩小图片大小<br>2、合并图片和拆分图片<br>3、透明图片处理<br>4、多域名下载图片<br>5、IE6下缓存背景图片<br>6、预加载图片&nbsp;&nbsp;<a href='http://www.blogjava.net/BearRui/archive/2010/02/22/web_performance_image.html'>阅读全文</a><img src ="http://www.blogjava.net/BearRui/aggbug/313644.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-02-22 16:53 <a href="http://www.blogjava.net/BearRui/archive/2010/02/22/web_performance_image.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能WEB开发 - HTTP服务器篇</title><link>http://www.blogjava.net/BearRui/archive/2010/01/29/web_performance_server.html</link><dc:creator>BearRui(AK-47)</dc:creator><author>BearRui(AK-47)</author><pubDate>Fri, 29 Jan 2010 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/BearRui/archive/2010/01/29/web_performance_server.html</guid><wfw:comment>http://www.blogjava.net/BearRui/comments/311230.html</wfw:comment><comments>http://www.blogjava.net/BearRui/archive/2010/01/29/web_performance_server.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/BearRui/comments/commentRss/311230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/BearRui/services/trackbacks/311230.html</trackback:ping><description><![CDATA[<span style="word-spacing: 0px; font: medium 微软雅黑; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2;">
<div style="font-size: 12px; margin: 8px; color: #000000; font-family: Verdana,Arial,Helvetica,sans-serif; background-color: #ffffff;">新产品为了效果，做的比较炫，用了很多的图片和JS，所以前端的性能是很大的问题，分篇记录前端性能优化的一些小经验。
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;"><span style="font-weight: bold;" mce_style="font-weight: bold;" mce_name="strong">第一篇：HTTP服务器</span></p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;因tomcat处理静态资源的速度比较慢，所以首先想到的就是把所有静态资源(JS,CSS,image,swf)</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">提到单独的服务器，用更加快速的HTTP服务器，这里选择了nginx了，nginx相比apache，更加轻量级，</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">配置更加简单，而且nginx不仅仅是高性能的HTTP服务器，还是高性能的反向代理服务器。</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;目前很多大型网站都使用了nginx,新浪、网易、QQ等都使用了nginx，说明nginx的稳定性和性能还是非常不错的。</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;<span style="font-weight: bold;" mce_style="font-weight: bold;" mce_name="strong">1. nginx 安装(linux)</span></p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;http://nginx.org/en/download.html 下载最新稳定版本</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;根据自己需要的功能先下载对应模板，这里下载了下面几个模块：</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;openssl-0.9.8l，zlib-1.2.3，pcre-8.00</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;编译安装nginx:</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">./configure&nbsp;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">--without-http_rewrite_module&nbsp;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">--with-http_ssl_module&nbsp;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">--with-openssl=../../lib/openssl-0.9.8l&nbsp;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">--with-zlib=../../lib/zlib-1.2.3&nbsp;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">--with-pcre=../../lib/pcre-8.00</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">--prefix=/usr/local/nginx</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">make</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">make install &nbsp;</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp;<span style="font-weight: bold;" mce_style="font-weight: bold;" mce_name="strong">2、nginx处理静态资源的配置</span></p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; #启动GZIP压缩CSS和JS</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; gzip &nbsp;on;</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; # 压缩级别 1-9,默认是1，级别越高压缩率越大，当然压缩时间也就越长</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; gzip_comp_level 4; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; # 压缩类型</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; gzip_types text/css application/x-javascript;</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; # 定义静态资源访问的服务，对应的域名:res.abc.com</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; server {</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;listen &nbsp; &nbsp; &nbsp; 80;</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;server_name &nbsp;res.abc.com;</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"># 开启服务器读取文件的缓存，</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">open_file_cache max=200 inactive=2h;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">open_file_cache_valid 3h;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">open_file_cache_errors off;</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;charset utf-8;</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span># 判断如果是图片或swf，客户端缓存5天</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">location ~* ^.+.(ico|gif|bmp|jpg|jpeg|png|swf)$ {</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp;&nbsp; root &nbsp; /usr/local/resource/;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;access_log off;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp;&nbsp; index &nbsp;index.html index.htm;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;expires 5d;</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"># 因JS,CSS改动比较频繁，客户端缓存8小时</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">location ~* ^.+.(js|css)$ {</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp;&nbsp; root &nbsp; /usr/local/resource/;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;access_log off;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp;&nbsp; index &nbsp;index.html index.htm;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;expires 8h;</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"># 其他静态资源</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">location / {</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;root &nbsp; /usr/local/resource;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;access_log off;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;expires 8h;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">}</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;}</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;<span style="font-weight: bold;" mce_style="font-weight: bold;" mce_name="strong">3、nginx 反向代理设置</span></p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;# 反向代理服务，绑定域名www.abc.com</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;server {</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">listen &nbsp; &nbsp; &nbsp; 80;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">server_name &nbsp;www.abc.com;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"></p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">charset utf-8;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"></p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"># BBS使用Discuz!&nbsp;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"># 因反向代理为了提高性能，一部分http头部信息不会转发给后台的服务器，</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"># 使用proxy_pass_header 和 proxy_set_header 把有需要的http头部信息转发给后台服务器</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">location ^~ /bbs/ {</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;root &nbsp; html;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;access_log off;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;index index.php;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp;&nbsp; # 转发host的信息，如果不设置host,在后台使用request.getServerName()取到的域名不是www.abc.com，而是127.0.0.1</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;proxy_set_header Host $host;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;# 因Discuz! 为了安全，需要获取客户端User-Agent来判断每次POST数据是否跟第一次请求来自同1个浏览器，</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;# 如果不转发User-Agent,Discuz! 提交数据就会报"您的请求来路不正确，无法提交"的错误</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;proxy_pass_header User-Agent;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;proxy_pass http://127.0.0.1:8081;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">}</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"># 其他请求转发给tomcat</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">location / {</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;root &nbsp; html;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;access_log off;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;index index.jsp;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">&nbsp; &nbsp;proxy_pass http://127.0.0.1:8080;</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">}</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;"><br />
</p>
<p style="padding: 0px 0px 0px 30px; margin: 0px;" mce_style="padding-left: 30px;">error_page &nbsp; 500 502 503 504 &nbsp;/50x.html;</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;location = /50x.html {</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;root &nbsp; html;</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</p>
<p style="padding: 0px; margin: 0px;">&nbsp;&nbsp; &nbsp;}</p>
<p style="padding: 0px; margin: 0px;"><br />
</p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">nginx详细配置参考：http://wiki.nginx.org/<br />
<br />
PS：如果安装提示GCC not found，运行下面命令安装就可以(apt-get install build-essential)，仅限debian</p>
</div>
</span>
<br class="Apple-interchange-newline" />
<img src ="http://www.blogjava.net/BearRui/aggbug/311230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/BearRui/" target="_blank">BearRui(AK-47)</a> 2010-01-29 15:42 <a href="http://www.blogjava.net/BearRui/archive/2010/01/29/web_performance_server.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>