<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>52微笑Blog &#187; 优化</title>
	<atom:link href="https://www.52smile.cn/?feed=rss2&#038;tag=%E4%BC%98%E5%8C%96" rel="self" type="application/rss+xml" />
	<link>https://www.52smile.cn</link>
	<description>记录生活点滴，分享精彩缤纷！</description>
	<lastBuildDate>Mon, 15 Jun 2015 13:33:12 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>[转载]WEB站点性能优化实践（加载速度提升2s）</title>
		<link>https://www.52smile.cn/?p=920</link>
		<comments>https://www.52smile.cn/?p=920#comments</comments>
		<pubDate>Sat, 26 Jan 2013 11:12:58 +0000</pubDate>
		<dc:creator><![CDATA[子涛]]></dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[网站性能优化]]></category>

		<guid isPermaLink="false">http://www.52smile.cn/?p=920</guid>
		<description><![CDATA[<a href="https://www.52smile.cn/?p=920"><img width="640" height="155" src="http://www.52smile.cn/wp-content/uploads/2013/01/20130126youhuapian.jpg" class="attachment-post-thumbnail wp-post-image" alt="20130126youhuapian" itemprop="image" lazyload="1" /></a>今天偶然从卢松松的网站看到了这篇文章，后来发现出处是大CC然后果断去大CC站点详细的品读了这篇文章，并对站点做了一下优化，利用WP minify合并了站点的css和js，同时修改了DNS解析将DNS解析从万网移至DNSPOD,修改后测试效果明显，随即转载此文以便普及大众！ 大CC站点地址：http://blog.me1]]></description>
				<content:encoded><![CDATA[<a href="https://www.52smile.cn/?p=920"><img width="640" height="155" src="http://www.52smile.cn/wp-content/uploads/2013/01/20130126youhuapian.jpg" class="attachment-post-thumbnail wp-post-image" alt="20130126youhuapian" itemprop="image" lazyload="1" /></a><p>今天偶然从卢松松的网站看到了这篇文章，后来发现出处是大CC然后果断去大CC站点详细的品读了这篇文章，并对站点做了一下优化，利用WP minify合并了站点的css和js，同时修改了DNS解析将DNS解析从万网移至DNSPOD,修改后测试效果明显，随即转载此文以便普及大众！</p>
<p>大CC站点地址：http://blog.me115.com</p>
<p>此文转载链接：http://blog.me115.com/2013/01/276</p>
<p><span style="font-family: 华文中宋; font-size: medium;">进行优化前，关键是剖析当前的web性能，找到性能瓶颈，从而确定最需改进的地方；如果精力有限，首先将精力放在能明显提升性能的改进点上；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">《<a href="http://www.me115.com/book/102.html" target="_blank">高性能网站建设指南</a>》提出了一个性能黄金法则：</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">只有10%-20%的最终用户响应时间花在了下载HTML文档上；其余的80%-90%的时间花在了下载页面中的所有组件上。</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">由于本文将实施一个完整的优化流程，所以，我们还是从后台开始；</span></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>案例说明：</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">优化之前的网站规模：</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">2个js、一个页头、一个页脚；3个css；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">类型：博客类站点；后台逻辑简单；首页不到10个sql查询；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">首页html文档52kb;</span></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>第一步：后台优化，启用页面缓存；</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">实验站点首页后台逻辑并不复杂，不超过10个Sql查询，通过查看时间线，本站在获取HTML文档时，花费的时间不到总响应时间的20%，优化之前没有使用缓存，所有的数据都是从数据库读取，这里，我们使用静态页面缓存，将首页整个页面完全的存放在缓存中（关于YII静态页面缓存的使用，<strong><a href="http://blog.me115.com/2013/01/246" target="_blank">参考这里</a></strong>）；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">通过查看html文档的生成时间来检测优化效果；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">首字节时间为376ms；html生成的时间大大缩短，后台时间减少了一倍。</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">优化前：</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image20655.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-20655" alt="wps_clip_image-20655" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image206552.png" width="640" height="120" border="0" /></span></a></p>
<p><span style="font-family: 华文中宋; font-size: medium;">优化后：</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image4529.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-4529" alt="wps_clip_image-4529" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image45292.png" width="640" height="72" border="0" /></span></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>第二步，DNS域名解析加速：</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">DNS解析是用户访问站点的第一步，在此之前，你的网站无法做任何事情；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">站点的DNS解析时间不应该超过500ms，如果站点原始DNS解析时间过长，就该考虑考虑使用第三方解析加速服务；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">实验站点的原始DNS解析较慢，平均耗时1017ms，算是非常长的；对于DNS加速，可以使用DNS域名解析加速服务，本站点采用的国内的一款免费DNS加速服务DNSPOD，效果还不错，使用后平均耗时降到370ms；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">加速前测试：</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image14761.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-14761" alt="wps_clip_image-14761" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image147611.png" width="644" height="31" border="0" /></span></a></p>
<p><span style="font-family: 华文中宋; font-size: medium;">使用DNS域名解析服务</span><span style="font-family: 华文中宋; font-size: medium;">之后的测试：</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image16186.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-16186" alt="wps_clip_image-16186" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image161861.png" width="644" height="28" border="0" /></span></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>第三步：使用CDN加速；</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">采用第三方CDN加速，时间缩短到2.1s；从下图中看到主要的耗时在于并行下载的个数有些低，如果能够提升并行下载量的个数，那么整体加载时间就会降低；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">注：个人建议，启用CDN最好放在最后一步，等将站点本身的优化都做完了之后，再启用CDN可以明显的看到优化效果。（开启CDN后，由于有CDN缓存的原因，观测站点的本身的优化就不是很方便了）；</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image15052.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-15052" alt="wps_clip_image-15052" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image150521.png" width="644" height="326" border="0" /></span></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>第四步，采用多台服务器提高并行加载量：</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">原理：一个浏览器对与同一域名的并行下载的个数默认是2个， HTTP.1.0中规定的是4个。这样，我们可以使用不同的域名来提升下载的速度；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">观察上图中的下载数量，第一次并行下载的个数是4个，初始认为是浏览器对于同一个域名来源的下载所限导致；于是考虑将部分静态文件分别放在不同的服务器上；通过把css和js放在不同服务器上；结果并不理想，发现并未提高速度。</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">想到在哪曾看到过，浏览器必须得把放在页头的css和js下载完成了之后才会开始下载其它的静态组件；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">关于并行下载这点上，后续将继续实验是否还有优化的空间。</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image21817.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-21817" alt="wps_clip_image-21817" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image218171.png" width="644" height="375" border="0" /></span></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>第五步，合并脚本和样式表；</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">    本站首页使用了2个js和3个css。如果采用朴素复制的方式，将js和css都分别整合到一个文件中，不但操作麻烦，而且不方便后期的管理。网络上有不少合并的工具，本站采用了CSS和JS合并优化工具-minify（下载地址：</span><a href="http://code.google.com/p/minify/"><span style="font-family: 华文中宋; font-size: medium;">http://code.google.com/p/minify/</span></a><span style="font-family: 华文中宋; font-size: medium;">）。如果使用的YII框架，更有YII整合版（</span><a href="https://bitbucket.org/TeamTPG/minscript/wiki/Home"><span style="font-family: 华文中宋; font-size: medium;">minscript Extension</span></a><span style="font-family: 华文中宋; font-size: medium;">），简单几步的配置，就自动将页面所有的js和css文件合并；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">关于</span><a href="https://bitbucket.org/TeamTPG/minscript/wiki/Home"><span style="font-family: 华文中宋; font-size: medium;">minscript Extension</span></a><span style="font-family: 华文中宋; font-size: medium;">的使用，请参考：</span><a href="https://bitbucket.org/TeamTPG/minscript/wiki/Usage"><span style="font-family: 华文中宋; font-size: medium;">https://bitbucket.org/TeamTPG/minscript/wiki/Usage</span></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>第六步，压缩css/js/html/xml；</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">不同的web服务器设置方式有所差别，本站使用的Linux/apache,</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">在web根目录下的.htaccess文件中添加以下代码即可：</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">#set compress</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">&lt;ifmodule mod_deflate.c&gt;</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">AddOutputFilter DEFLATE html xml php js css</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">&lt;/ifmodule&gt;</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">通过firefox工具可看到，压缩前，html文档的大小是25KB；合并后的js大小为138KB；</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image2227.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-2227" alt="wps_clip_image-2227" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image22271.png" width="644" height="236" border="0" /></span></a></p>
<p><span style="font-family: 华文中宋; font-size: medium;">压缩后，html文档大小为6.2KB。js大小为39.8KB；减少2/3的传输时间；</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image10096.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-10096" alt="wps_clip_image-10096" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image100961.png" width="644" height="102" border="0" /></span></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>第六步，最大化的减少HTTP请求；</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">添加Expires头, 启用静态内容缓存，将jpg、gif等文件缓存；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">方法也是在.htaccess中添加：</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;"># Image and Flash content Caching for One Month</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">&lt;FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf)$”&gt;</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">Header set Cache-Control “max-age=2592360″</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">&lt;/FilesMatch&gt;</span></p>
<p>&nbsp;</p>
<p><span style="color: #ff8000; font-family: 华文中宋; font-size: medium;"><strong>结论</strong></span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">查看最终的测试结果，整体实现了较大的性能提升，最终页面展现时间为1.62s（测试使用的是一个第三方web测速工具，所有测试结果是在第三方本地无缓存的条件下进行）。仔细观察本站最后几个加载项：有一个第三方网站的广告（加载广告的时刻，页面已经全部呈现，对用户体验影响不大），以及cnzz的统计数据。这样看来，在第12项加载完后，整个页面就完整的呈现在用户面前，优化最终结果是1.1s，较优化前加载速度提升2s；由于物理条件（虚拟机、国外站点）所限，本次优化就到此为止（后续将在并行下载上做做文章，看是否有进一步提升空间）。</span></p>
<p><a href="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image7016.png"><span style="font-family: 华文中宋; font-size: medium;"><img title="wps_clip_image-7016" alt="wps_clip_image-7016" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/wps_clip_image70161.png" width="644" height="219" border="0" /></span></a></p>
<p>&nbsp;</p>
<p><span style="font-family: 华文中宋; font-size: medium;">本次优化主要使用的是前端优化，其中大部分规则来自于这本书的指导《<a href="http://www.me115.com/book/102.html" target="_blank">高性能网站建设指南</a></span><span style="font-family: 华文中宋; font-size: medium;">》；如果你的web前端部分还没有充分优化，强烈建议读读这本书；</span></p>
<p><span style="font-family: 华文中宋; font-size: medium;">这是一本你只需画上三小时就能看完，但收获价值远远大于付出的一本书。</span></p>
<p><img title="image" alt="image" src="http://42.121.14.102/css/blog/wp-content/uploads/2013/01/image2.png" width="194" height="262" border="0" /></p>
]]></content:encoded>
			<wfw:commentRss>https://www.52smile.cn/?feed=rss2&#038;p=920</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
