【观点】如何打造网站高性能的核心优势
【CSDN编译】导读:本文根据Jeff Atwood的博文《Performance is a Feature》整理编译而来。作者就如何创建高性能网站分享了一些经验。现整理出来与大家分享。
以下是博客内容:
很多数据表明,网页打开和下载的速度越慢,用户越不愿使用。
从Google搜索中可看出,当页面显示10个答案需要用时0.4秒,而页面出现30个结果需要用时0.9秒,仅仅半秒钟导致下降20%的传输,半秒钟的延迟同时降低了用户的满意度。
我相信反过来也是如此,即网站速度越快,就会有更多的人愿意使用它。这是一个逻辑:页面速度载入的越快,用户就能越快可以辨别这个页面是否包含了想要的东西。因此,他们总是愿意浏览快速的网站。不管这些内容是否是用户要寻找的,当然也有类似的经验,可提供多个网站。那么如何辨别呢?首先,它得存在,速度要快。
你是否觉得这有必要如此对速度的需求?如果是这样,我有三点建议与大家分享。
按照雅虎的指导方针
为建立快速的网站黄金参考标准,雅虎2007年为网站提高速度的13个简易规则。
这里有一些好的建议,如果运行某一个网站,每天可拥有数百万的用户。
因为我四年前写的这个,发生了一些有趣的事。我现在经营一家公共网站,技术问答社区,日常访问量可达到数百万用户。当然它也取决于网站规模的大小。 如果你想经营一家公共网站,你真的应该熟读雅虎的清单,用心领会每一行或者借助于工具,它们都会帮助你改变网站的性能:
一直以来,我们对雅虎的列表实施超过13项,除了一个:Using a Content Delivery Network。作为最后一步的优化,我们刚刚推出了为所有静态内容的CDN,结果是令人兴奋的,我们的数据中心在NYC, 因此,可以说成“在世界上的某个区域我们的网站为用户提供的有多快速?”。
从技术的准确度利益上讲,静态内容不支持图片特性,用户必须通过我们的NFC服务来获得动态内容,但是90%的访问者都是匿名的,只有36%的流量来自于美国。雅虎的研究表明,40%---60%的日常访问者用一个空的浏览器来缓存,而能够优化这个全球冷门缓存性能是个巨大的胜利。
由于关于雅虎的性能调整,而且都是免费的小工具,导致我们不会继续推荐CDN,与其他公司相比类似亚马逊、NetDNA和CacheFly等,自从2007年以来使用CDN也受益很多。因此。在时机成熟时,把雅虎列表当做一种信仰来工作吧。
重视(优化)匿名和注册用户
目前我们的主要信息来源于匿名用户,通过他们的搜索引擎以及其他方式获知。
这是典型的“write once, read – and hopefully edit – millions of times.”,同时我们也因社区活跃用户使网站内容更加丰富多彩。我们一直在改进新的性能,这也就意味着我们将提供JavaScript 和HTML甚至更多服务。通过下载量上就可以在用户之间辨别出哪些用户每天在网上,哪些用户是一个月或者是一年才浏览网站。
两种类别都很重要,针对不同的需求。匿名用户偏爱优化浏览器速度。而社区用户则更关心内容资源。两种类别互相依赖,并需要不同的对待。我们设计和优化两个用户类:匿名用户和注册用户。下面是我随机挑选的谷歌Chrome浏览器用户使用情况:
我们尽量减少匿名用户使用HTML, CSS and Javascript这样网页速度更快。我们在用户输入大区域设置一个基本功能“rez in”类似编辑功能,对注册用户来说,空间容量必须足够大,同时我们也为大多数的社区用户增加功能,避免损害匿名用户的丰富体验。
Make Performance a Point of (Public) Pride 作出性能优势
现在,我们已经完全使用雅虎的性能指导,并确保对匿名用户提供最基本的必要的服务。
当谈及网站性能时,就会想到一个基本的定律:你永远无法让网页服务的速度比在服务器上渲染网页的速度快。我知道这一点,但是我得告诉你,如果在一年左右的开发进程中没有注意到几百毫秒的差别,就会很容易会落入陷进。当某天,你回转过来,发现你的网页以一个非常奇异的速度呈现在服务器上了。这是一个了不起的速度,甚至你在网络上传输第一个字节时,网页已经打开!
这就是为什么作为一名开发人员,需要在每一个独立页面右上角设置性能。同时,这正是我们用MVC Mini Profiler来促进开源,而在把每一页的右上角服务器渲染时间的简单行来迫使我们解决我们所有的性能衰退和遗漏。
注意你可以点击SQL上的链接,看看每一步实际运行的时间有多久。你也可以把链接分享给你的伙伴们,开发出该运行分析器数据中的弊端。它适用于AJAX请求,之前我所提到的开源MVC Mini Profiler是完全巨大的,如果此时你在.NET上,你应该去核实下。
随着开发团队为大家所呈现的渲染出的页面,所作出的性能优势,很多地方由于一点点马虎而导致页面不相称,大部分性能是凌乱的,甚至无法进行重建,对用户来说事情也变得更加简单,快速。
它会正常运行吗? ILAsm正常运行:
这是抓取Google页面下载时段;从表上反映出完整的页面需要载入的时间:
当然,服务器页面所呈现的时间仅仅是性能的一部分,它取决于的时间你从哪段开始。我不能保证页面呈现的时间段能帮助我们多少,但作为一个开发团队,应该建立一个引人注目且又快的网站。我们的网站算是比较快的,但即使是像我们这么快的网站,因为这个简单的变化我们也受益很多。
性能改变不是简易之事,这是一个漫长而又艰难的道路,我们已经朝着好的硬件方向不断的改变着。
我清楚的记得,2000年从AltaVista系统切换到Google,它的速度极快,对我来说,性能是一种特性,相比慢的网页我更喜欢快速的。因此我创建了一个网站,这也正是我想使用的。但是,我认为在公共互联网竞争环境中有一种东西永远值得我们去学习——即所谓的两种类型的网站:快速与停滞。