Yes! B/S !
JustinYoung's Blog
博客园  首页  新随笔    管理  订阅 订阅

如何提高网页的效率(上篇)——提高网页效率的14条准则

你的网页太臃肿!
图:你的网页太臃肿了!

网站最基本的东西是什么?

网站最基本的东西是什么?
——内容?SEO(搜索引擎优化)?UE(用户体验)?都不对!是速度!
内容再丰富的网站,如果慢到无法访问也是毫无意义的; SEO做的再好的网站,如果搜索蜘蛛抓不到也是白搭; UE设计的再人性化的网站,如果用户连看都看不到也是空谈。
所以网页的效率绝对是最值得关注的方面。如何才能提高一个网页的效率呢?Steve Souders(Steve Souders的资料http://www.oreillynet.com/pub/au/2951)提出的提高网页效率的14条准则,而这些准则也将是我们下篇中介绍到的YSlow工具的理论基础:

  • Make Fewer HTTP Requests
  • Use a Content Delivery Network
  • Add an Expires Header
  • Gzip Components
  • Put CSS at the Top
  • Move Scripts to the Bottom
  • Avoid CSS Expressions
  • Make JavaScript and CSS External
  • Reduce DNS Lookups
  • Minify JavaScript
  • Avoid Redirects
  • Remove Duplicate Scripts
  • Configure ETags
  • Make Ajax Cacheable
这里我们将逐一的讲解这些准则,对其中开发者密切相关的准则我将详细讲解。小弟个人技术实在有限,错误和无知在所难免,还请高人指点。

 

第一条:Make Fewer HTTP Requests 尽可能的减少HTTP的Request请求数。

80%的用户响应时间都是浪费在前端。而这些时间主要又是因为下载图片、样式表、JavaScript脚本、flash等文件造成的。减少这些资源文件的Request请求数将是提高网页显示效率的重点。
这里好像有个矛盾,就是如果我减少了很多的图片,样式,脚本或者flash,那么网页岂不是光秃秃的,那多难看呢?其实这是一个误解。我们只是说尽量的减少,并没有说完全不能使用。减少这些文件的Request请求数,当然也有一些技巧和建议的:

1:用一个大图片代替多个小图片。
这的确有点颠覆传统的思维了。以前我们一直以为多个小图片的下载速度之和会小于一个大图片的下载速度。但是现在利用httpwatch工具的对多个页面进行分析后的结果表明事实并不是这样。
第一张图是一个大小为40528bytes的337*191px的大图片的分析结果。
第二张图是一个大小为13883bytes的280*90px的小图片的分析结果。
点击查看大图
一个大小为40528bytes的337*191px的大图片的分析结果(点击图片可以查看完整大图片)

点击查看大图
一个大小为13883bytes的280*90px的小图片的分析结果(点击图片可以查看完整大图片)
第一张大图片花费时间为:
Blocked:13.034s
Send:0.001s
Wait:0.163s
Receive:4.596s
TTFB:0.164s
NetWork:4.760s
功耗时:17.795s
真正用于传输大文件花费的时间为Reveive时间,即4.596s,多数的时间是用来检索缓存和确定链接是否有效的Blocked时间,供花费13.034s,占总时间的73.2%。

第二张小图片花费时间为:
Blocked:16.274s
Send:小于0.001s
Wait:0.117s
Receive:0.397s
TTFB:0.118s
NetWork:0.516s
功耗时:16.790s
真正用于传输文件的花费时间是Reveive时间,即0.397s,这的确要比刚才大文件的4.596s小很多。但是他的Blocked时间为16.274s,占总时间的97%。

如果这些数据还不够说服你的话,让我们看看下面这张图。这里列出了某个网页中所有图片中的花费时间示意图。当然,里面的图片有大有小,规格不一。
httpwatch,杨正祎,Yes!B/S!
大约80%以上的时间是用来检索缓存和确定链接是否有效的Blocked时间。
其中藏青色的为传输文件花费的Reveive时间,而前面白色的为检索缓存和确认链接是否有效的Blocked时间。铁一样的事实告诉我们:
  • 大文件和小文件下载所需时间的确是不同的,差异的绝对值不大。而且下载所需时间占总耗费时间比例很小。
  • 大约80%以上的时间是用来检索缓存和确定链接是否有效的Blocked时间。无论文件大小,这个时间的花费大致是相同的。而且所占总耗费时间的比例是极大的。
  • 一个100k的大图片总耗费时间绝对大于4个25k的小图片的总耗费时间。而且主要差别就是4个小图片的Blocked时间绝对大于1个大图片的Blocked时间。
所以如果可能还是使用大图片来替代过多的琐碎的小图片吧。这也是为什么翻转门的效率要高于图片替换实现的滑动门的原因。
但是,请注意:也不能用太大的单张图片,因为那样会影响到用户体验。例如个几兆的背景图片的使用绝对不是一个好主意。
2:合并你的css文件。
合并,合并示意图
图:合并与融合
我以前犯了一个错误,你在看我《样式表的组织与规划》的系列文章中会知道。当时,我为了方便组织和规划样式表,将用于不同用途的样式表文件分离开来,形成不同的css文件。然后在页面中根据需要引用多个css文件。根据“尽可能的减少HTTP的Request请求数”准则我们知道,那样的确是不合理的,因为那样会产生更多的HTTP的Request请求数。从而降低网页的效率。所以,从提高网页效率的角度上而言,我们还是应该将所有的css写在同一个css文件中。但是问题又来了。那么怎么来很好的组织和规划样式表呢?这的确是个矛盾。我现在的做法是采用两套版本。编辑版和发布版。编辑版仍然使用多个css文件以便于规划和组织。而等到发布的时候,再将多个css文件合并到一个文件中去,从而达到减少HTTPRequest请求数的目的。
3:合并你的javascript文件。
原因和处理方法同上,不再赘言。

 

第二条:Use a Content Delivery Network 使用CDN

这个看上去好像很深奥的样子,但是只要结合中国的网络特色,这个便不难理解了。“北方服务器”、“南方服务器”、“电信服务器”、“网通服务器”……这些词听起来是那么熟悉和压抑。如果,一个北京的电信用户试图从广东的网通服务器上打开一个类似《壁纸合集》帖子的网页时,你就能很深刻的理解。
鉴于这个不是我们开发人员力所能及的准则,所以这里也就不多言了。

CDN,南北服务器,电信网通,宽带互联
图:这个图也算有点中国特色了

 

第三条:Add an Expires Header 添加周期头

这个也并非开发人员来控制,而是网站服务器管理员的职责。所以,如果作为开发人员的你不了解和明白也没有关系。还是把这个准则告诉公司的网站服务器管理员。

第四条:Gzip Components 启用Gzip压缩

这个大家应该比较熟悉。Gzip的思想就是把文件先在服务器端进行压缩,然后再传输。这对于体积较大的纯文字型的文件有特效。鉴于这也并非开发人员,而是网站服务器管理员的工作范畴,这里就不详细讲解了。如果你对此感兴趣,可以资讯贵公司的网站服务器管理人员。

第五条:Put CSS at the Top 把CSS样式放在页面的上方。

无论是HTML还是XHTML还是CSS都是解释型的语言,而非编译型的。所以CSS到上方的话,那么浏览器解析结构的时候,就已经可以对页面进行渲染。这样就不会出现,页面结构光秃秃的先出来,然后CSS渲染,页面又突然华丽起来,这样太具有“戏剧性”的页面浏览体验了。

第六条:Move Scripts to the Bottom 将脚本放在底部

原因同第五条一样。只是脚本一般是用来于用户交互的。所以如果页面还没有出来,用户连页面都不知道什么样子,那谈交互简直就是扯谈。所以,脚本和CSS正好相反,脚本应该放在页面的底部。

第七条:Avoid CSS Expressions 避免使用CSS中的Expressions

if语句,expression,判断语句示意图
图:CSS中的Expressions其实也是一种if判断
首先有必要先说明一下CSS Expressions是什么一个东西。其实它就像其它语言中的if……else……语句。这样在CSS中就可以进行简单的逻辑判断了。举个简单的例子——
<style>
input
{background-color:expression((this.readOnly && this.readOnly==true)?"#0000ff":"#ff0000")}
</style>
<INPUT TYPE="text" NAME="">
<INPUT TYPE="text" NAME="" readonly="true">
这样css就可以根结一些情况分别使用不同的样式了。如果你对这个感兴趣可以到我的博客上阅读相关的文章—— 《CSS中的expression系列文章》。但是CSS中Expressions 的代价却是极高的。当你的页面需要根据判断来渲染效果的元素很多的时候,那么你的浏览器将长期处于假死状态,从而给用户带来极差的用户体验。

 

第八条:Make JavaScript and CSS External 将javascript和css独立成外部文件

这一条好像和第一条有点矛盾。的确,如果从HTTP的request请求数来讲的话,这样做的确是降低了效率。但是之所以这么做,是因为另外一个重要的考虑因素——缓存。因为外部的引用文件会被浏览器缓存,所以如果javascript和css体积较大的时候,我们将它们独立成外部文件。这样当用户只要浏览一次以后,这些体积较大的js和css文件就能被缓存起来,从而极高地提高用户再次访问时的效率。

第九条:Reduce DNS Lookups  减少DNS查询

DNS域名解析系统。大家都知道我们之所以能记住那么多的网址,是因为我们记住的都是单词,而非http://202.153.125.45这样的东西,而帮我们把那些单词和202.153.125.45这样的ip地址联系起来的就是DNS。那这一条对我们到底有什么真正意义上的指导意义呢?其实有两条:
1:如果不是必须,请不要把网站放到两台服务器上。
2:网页中的图片、css文件、js文件、flash文件等等,不要太多的分散在不同的网络空间中。这就是为什么那种只发一个网站中的壁纸图片的帖子,要比壁纸图片来源于不同网站的帖子显示要快得多的原因。

第十条:Minify JavaScript and CSS  减少JavaScript和CSS文件的体积

这点很好理解。在你的最终发布版本中把没有必要的空行、空格和注释全部去掉。显然手工去处理效率太低,好在网上到处都是用于压缩这些东西的工具。压缩JavaScript代码体积的工具随处可见,我便不再列举了,这里我只提供一个用于压缩css代码体积的在线工具网站——http://www.cssdrive.com/index.php/main/csscompressor
它提供了多种压缩方式,可以适应多种要求。

第十一条:Avoid Redirects 避免跳转

我只从网页开发人员的角度来解读此条。那么我们可以解读到什么东西呢?2点——
1:“此域名已过期,5秒钟以后,页面将跳转到http://www.xxxxxx.com/index.html页面”,这句话看起来的确很熟悉。但是,我就奇怪了,为什么不直接链接到那个页面呢?
2:一些链接地址请更明确的写出来。例如:将http://justinyoung.cnblogs.com/ 写成http://justinyoung.cnblogs.com (注意最后面一个“/”符号)。的确,这两个网址都能访问到我的博客,但是,事实上,它们是有区别的。http://justinyoung.cnblogs.com 的结果是个301响应,它会被重新指向http://justinyoung.cnblogs.com/ 。但是显然,中间多浪费了一些时间。

第十二条 Remove Duplicate Scripts 移除重复的脚本

对重复说不
图:对重复说“不!”

这个准则的道理很浅显,但是真正在工作中,很多人却因为“项目时间紧”、“太累了”、“初期没有规划好”……这样的理由搪塞过去了。你,的确可以找很多的理由不去处理这些多余重复的脚本代码,如果你的网站不需要更高的效率和后期维护的话。
也正是这点,我提醒大家一些,一些javascript框架、javascript包一定要慎用。至少要问一下:用了这个js kit 到底给我们多少方便,提高了多少工作效率。然后,再与它因为多余的、重复的代码带来的负面效果比较一下。

第十三条:Configure ETags 配置你的实体标签

首先来讲讲什么是Etag吧。Etag(Entity tags )实体标签。这个tag和你在网上经常看到的标签云那种tag有点区别。这个Etag不是给用户用的,而是给浏览器缓存用的。Etag是服务器告诉浏览器缓存,缓存中的内容是否已经发生变化的一种机制。通过Etag,浏览器就可以知道现在的缓存中的内容是不是最新的,需不需要重新从服务器上重新下载。这和“Last-Modified”的概念有点类似。很遗憾作为网页开发人员对此无能为力。他依然是网站服务器人员的工作范畴。如果,你对此有兴趣,可以咨询贵公司的网站服务器管理员。

第十四条:Make Ajax Cacheable 上面的准则也适用Ajax

Ajax
图:Ajax的使用要恰当

现在的Ajax好像有点被神话了,好像网页只要Ajax了,那么就不存在效率问题了。其实这是一种误解。拙劣的使用Ajax不会让你的网页效率更高,反而会降低你的网页效率。Ajax的确是个好东西,但是请不要过分的神话它。使用Ajax的时候也要考虑上面的那些准则。

后记:

当然,上面的这些也只是供你参考的理论上的准则。具体的情况还是要具体的去对待。理论和准则只是用来指导现实工作的,却是万万不可死记硬套。

相关链接:

如何提高网页的效率(下篇)暂时还没有排版好,所以没有放出。请您继续关注本博客,我将在1周之内排版好并放出。
如何提高网页的效率 14条建议(IT168版)
如何提高网页的效率(下篇)——Use YSlow to know why your web Slow
《CSS中的expression系列文章》
CSS在线压缩工具


Tag标签:
如何提高网页的效率,如何提高效率,网页打开速度慢,开网页速度慢,网页速度慢,网页打开速度很慢,网页打开速度,提高网页浏览速度,浏览网页速度慢,网页打开速度太慢,打开网页的速度慢

 

本文的讨论

博客园【web标准设计小组】关于本文的讨论
posted @ 2007-11-20 08:55 阿一(杨正祎) 阅读(7590) 评论(90)  编辑 收藏
发表评论
  回复  引用  查看    
2007-11-20 09:03 | Jeffrey Zhao      
哈,不错,只是说的简单了一些。
  回复  引用  查看    
2007-11-20 09:07 | 老刘.      
em fun of u~
  回复  引用  查看    
2007-11-20 09:23 | Yoshow      
我看上你介绍的httpwatch这个工具了..
  回复  引用    
2007-11-20 09:25 | kkddonline [未注册用户]
博主不厚道,博客园链接就隐藏了
  回复  引用  查看    
2007-11-20 09:30 | 杨正祎      
@Yoshow
httpwatch相关信息:
http://www.cnblogs.com/JustinYoung/archive/2007/04/19/719756.html
  回复  引用  查看    
2007-11-20 09:31 | 杨正祎      
@kkddonline
你是第二个提出的,所以我必须改正。我现在在后台管理中已经将这个放出来了。以前没有注意,给大家带来了麻烦,请原谅。
  回复  引用  查看    
2007-11-20 09:33 | 杨正祎      
@老刘.
???我英语不太好,不太明白。
  回复  引用  查看    
2007-11-20 09:34 | 杨正祎      
@Jeffrey Zhao
老赵,早哦。
没有办法,因为有些,我也不是特别了解,所以就推给网络管理员了。我只能对自己比较熟悉的东西多说2句。
  回复  引用  查看    
2007-11-20 09:34 | works guo      
顶
  回复  引用  查看    
2007-11-20 09:44 | Charly      
不错,收藏先。
  回复  引用  查看    
2007-11-20 09:49 | 伍迷      
写得好。目前国内在这方面的文章其实并不多。
  回复  引用  查看    
2007-11-20 09:49 | 丹心猪(Dansinge)      
mark
  回复  引用    
2007-11-20 09:52 | zzz [未注册用户]
好,又长了见识了
  回复  引用    
2007-11-20 09:55 | zzz [未注册用户]
悄悄的说一句,那个httpwatch 5.x的license在某个绿色下载站的绿色版里有,就悄悄的从官方下了5.x装上。。。

其实我在胡言乱语...
  回复  引用  查看    
2007-11-20 09:56 | 老刘.      
@杨正祎
em fun of u~
俺是你的粉丝儿...

  回复  引用  查看    
2007-11-20 09:59 | Clark Zheng      
汗,不知道这些准则是不是全都是正确的,如果那样,有好多错误我就在一直犯着。。。
  回复  引用  查看    
2007-11-20 10:03 | jillzhang      
你这没有首页链接还不能后退的做法真是BT
  回复  引用  查看    
2007-11-20 10:04 | 杨正祎      
@Clark Zheng
这些准则是Steve Souders提出的,而不是我哦。
(Steve Souders的资料http://www.oreillynet.com/pub/au/2951)
  回复  引用  查看    
2007-11-20 10:05 | 杨正祎      
@jillzhang
刚在在后台做实验呢,正好被你赶上了哦。呵呵。。u r luck!
现在已经修正了。
  回复  引用  查看    
2007-11-20 10:06 | 杨正祎      
@老刘.
瓦咔咔~~这个太夸张了吧。咱谁也不粉谁,相互进步吧。
这世界没啥粉丝面条的。只有“3人行,必有我师”。
  回复  引用  查看    
2007-11-20 10:15 | 水果阿生      
这东西写的不错啊
  回复  引用  查看    
2007-11-20 10:19 | PureEviL      
非常棒的文章
  回复  引用  查看    
2007-11-20 10:34 | Anders Liu      
这本书博文已经拿到了翻译权,如果不出意外的话,我会翻译这本书哦~~~
  回复  引用  查看    
2007-11-20 10:41 | 杨正祎      
@Anders Liu
快点造福人们吧,期待着这样的好书。我这只是看后,自己的一些看法而已。肯定有很多错误。
  回复  引用  查看    
2007-11-20 10:42 | 杨正祎      
@水果阿生
我这只是看后,自己的一些看法而已。肯定有很多错误。
还请大家到讨论组去讨论一下,更正一些因为我的无知造成的错误。
  回复  引用  查看    
2007-11-20 10:43 | 杨正祎      
@PureEviL
我这只是看后,自己的一些看法而已。肯定有很多错误。
还请大家到讨论组去讨论一下,更正一些因为我的无知造成的错误。
  回复  引用    
2007-11-20 11:06 | A1 [未注册用户]
第十三条:Configure ETags 配置你的实体标签
-----------------
这个只能由web服务器来决定,且只针对静态文件,因为静态文件(通过配置)声明过期时间是不合理的,“Last-Modified”也可能不够侦测文件是否修改,所以才需要这个ETags, 它其实就是文件弱校验,主流的web服务器都会自动对静态文件的传输加上此报头,还要你配置啥?你能找出个web服务器是有这个配置项的么?

  回复  引用  查看    
2007-11-20 11:12 | 海东青      
第九条:Reduce DNS Lookups 减少DNS查询

这个不一定吧,很多大的网站资源文件还是放在不同的服务器的。


  回复  引用  查看    
2007-11-20 11:17 | 杨正祎      
@A1
高手终于出现了。这条我承认,我不是很了解。谢谢A1兄。

申明一下:因小弟才疏,所以很多条,我不能保证其正确性和准确性。请大家以评论者中各位高手的答复为参考意见。自己把握。因此给您造成的不便,请谅解。
  回复  引用  查看    
2007-11-20 11:20 | 杨正祎      
@海东青
数据库、文件、网页的确可以放在不同的服务器上,但是不应该把网站的多个页面放在不同的服务器上。数据库连接的配置节中我们一般都是直接写ip地址的。就没有这个问题了。
小弟愚见,还请高人指点。
  回复  引用  查看    
2007-11-20 11:23 | Jeffrey Zhao      
@A1
这话说得不对,虽然Web服务器可以处理静态资源,不过动态资源呢?
很多“静态资源”也是“动态输出”的,最好的例子就是.net程序集内嵌的脚本文件,就是通过axd文件动态输出的——而且服务器的AJAX Handler呢?很可能我们输出的AJAX Handler在很多时候是相同的,我们可以使用服务器缓存,但是靠类似ETag之类的做法可以带来更高的效率,因为大大减少了客户端和服务器端的通信量。
以上的是开发高性能应用的准则,并没有涉及具体实现。而且主流Web服务器都提供了扩展能力可以让开发人员进行扩展——比如我们就能为IIS写Web Extensions。
  回复  引用  查看    
2007-11-20 11:25 | Jeffrey Zhao      
还有这本书我下不到电子版的,唉……
  回复  引用  查看    
2007-11-20 11:28 | Jeffrey Zhao      
@杨正祎
还是个度的问题。通过多个domain地址可以有效地减少浏览器对于同一domain资源2个连接的限制,这样可以有效地提高页面加载速度。但是如果并行连接太多也不好,页面会僵死,一般4-5个连接最有效,也就是2-3个domain为好。
至于DNS Lookup的时间,这东西是有缓存的,性能不会有太大问题。
  回复  引用  查看    
2007-11-20 11:33 | Jeffrey Zhao      
不过这片文章和这本书主要是从“客户”角度出发的页面性能优化,而开发高性能应用的一个重要关键是“后台优化”还没有提到。“后台优化”其实更关键,而且要求更高,因为涉及的东西太多,软件/硬件/操作系统/设计……而且很多时候还涉及到成本(就是金钱),而不像这些优化大都是“不要钱”的——而且说起来都是比较容易实现的性能优化。
  回复  引用  查看    
2007-11-20 11:36 | Jeffrey Zhao      
对了,看到了开篇的文字,吹毛求疵一下。
本文这样的优化仅对用户体验有效,不会影响Search Engine蜘蛛的抓取。
也就是说,无论做不做这方面优化,蜘蛛还是照样爬,呵呵。
  回复  引用    
2007-11-20 11:37 | A1 [未注册用户]
@Jeffrey Zhao
呃,一时手快,没想到你说的这个。
其实我自己也有做过类似Etags的扩展。
因为IE中的XmlhttpRequest组件有时会发神经,明明过期了,文件也修改了,但它就是会取缓存而不是重新获取,不得已我就自己加了一个协议报头作为版本标识。
  回复  引用  查看    
2007-11-20 11:40 | Jeffrey Zhao      
@A1
嗯嗯……ETag其实只是一种手段,有了个这个启发我们也可以实现比如FTag,GTag之类的,呵呵。
  回复  引用  查看    
2007-11-20 11:42 | 杨正祎      
@Jeffrey Zhao
网络蜘蛛,这点我还真的没有想到,我原本以为,网络蜘蛛和用户一样,也需要“打开页面”,才能抓取呢。
现在想到了,其实网络蜘蛛,抓的是网页的源代码,蜘蛛可能对网页的解释有不同于浏览器的另外一种解释方案。

  回复  引用    
2007-11-20 11:44 | A1 [未注册用户]
呵呵,我也补充一条吧:
因为IE 中DOM操作是单线程的(标示了异步的XMLdoc/xmlhttp除外),所以千万不要一次做过大的dom操作,特别是在主要界面没有生成之前,可以如果真有需要,可以考虑重构成window.Interval(doworklight)。
  回复  引用  查看    
2007-11-20 11:46 | ddr888      
不看都知道很精彩!支持
  回复  引用  查看    
2007-11-20 11:59 | 杨正祎      
@A1
这一点,我以前还真的不知道。而且,现在手头正好有个这个方面的javascript工作要做。
高手~谢谢。
  回复  引用  查看    
2007-11-20 12:05 | Jeffrey Zhao      
@杨正祎
倒不是“解释”上的问题,是因为蜘蛛不会去下载图片,js,css,而文章里都是在加载资源时需要注意的问题,呵呵。
  回复  引用  查看    
2007-11-20 12:10 | 周银辉      
good
  回复  引用  查看    
2007-11-20 12:22 | 金色海洋(jyk)      
保存
  回复  引用    
2007-11-20 13:06 | A1 [未注册用户]
@杨正祎
汗~我只是老鸟罢了。
居然写错函数名了,关于dom异步/多线程的描述也是不准确。
对dom结点的控制只能是单线程的,但该节点的对象实体自身的载入、解析、渲染可能是在独立的线程中完成的,比如css的解析、渲染、标示了defer 的<script/>的解析以及外联css、image、actviex对象的载入。xmldoc 的异步标示也只是适用与载入和基本的dom解析,你可以测试发现如果不停改写某个xmldoc节点的属性,它同样会导致其它dom操作被阻塞。


@Jeffrey Zhao
google可能不抓js,但以前 live 会抓js(现在不知道),以前我有一个站点是完全应用ajax的,页面内容是动态生成的,live 的搜索结果显示了生成的内容,快照也是一个生成好的页面。
  回复  引用  查看    
2007-11-20 13:56 | RyanYu      
很好,学到东西拉~
  回复  引用  查看    
2007-11-20 14:04 | Leepy      
很有启发意义的一篇文章!谢谢!
  回复  引用  查看    
2007-11-20 14:37 | 静旅      
看到有点昏。
吸收中...

  回复  引用  查看    
2007-11-20 15:32 | Leem      
太有才了,非常喜欢文章的语气风格,很轻松. (顺便:你丈母娘家的小狗很可爱)
  回复  引用  查看    
2007-11-20 15:54 | 十分之七      
脚印
  回复  引用  查看    
2007-11-20 17:41 | 杨正祎      
@RyanYu
深感欣慰。谢谢。
  回复  引用  查看    
2007-11-20 17:41 | 杨正祎      
@Leepy
甚感欣慰。谢谢。
  回复  引用  查看    
2007-11-20 17:42 | 杨正祎      
@静旅
相互学习,共同进步。
  回复  引用  查看    
2007-11-20 17:43 | 杨正祎      
@Leem
这条小狗命运很坎坷的。 Orz...
  回复  引用  查看    
2007-11-20 17:44 | 杨正祎      
@十分之七
我也踩一脚。呵呵。。
  回复  引用  查看    
2007-11-20 18:03 | bullion      
博主太帅了, 期待你的下一篇
  回复  引用    
2007-11-21 01:25 | 飞雪尔 [未注册用户]
第六条:Move Scripts to the Bottom 将脚本放在底部

-----------严重不同意第六条,可以说比较容易误导人,举个简单的例子,现在很多网站都在底部加上了google分析,而这个tracking js的访问速度一般情况下是比较慢的,往往等页面全部显示了,这个js也没有完成。所以说如果把所有js都放在底部就有风险了,可能等页面都显示完了,你有关要进行dom操作的js还没有加载完成。这个时候用户如果操作的话就可能碰到问题。
  回复  引用    
2007-11-21 06:43 | 飞雪连天射白鹿 [未注册用户]
SEO做的再好的网站,如果搜索蜘蛛抓不到也是白搭;
--------------------------------------------------
同样对速度快的网站也一样.... 网站最基本的还是要靠SEO的, 收录不了知道能是SEO的失败

谈到网站就别过多的涉及到技术. 除了技术还有很多影响网站速度的.比如空间,线路等. 现在的网站一般都全站生成静态HTML , 访问速度应该都不是问题. 头疼的都是是否被收录了.

LZ文章开头都没有明确标明转载, 转载了不知道有没有亲身尝试过. 如果尝试了是否可以看下LZ网站推广得如何了?
  回复  引用  查看    
2007-11-21 08:35 | BlackCat      
留个脚印继续往下看
  回复  引用  查看    
2007-11-21 08:45 | Jeffrey Zhao      
@飞雪尔
理论上是的,不过一般不会在这方面出现问题。
  回复  引用  查看    
2007-11-21 09:04 | 杨正祎      
@飞雪连天射白鹿
“LZ文章开头都没有明确标明转载, 转载了不知道有没有亲身尝试过. 如果尝试了是否可以看下LZ网站推广得如何了? ”
——首先,这篇文章不是转载,是读后感,读后感,应该算原创吧。
——我在博客写文章不是为了推广网站,而是为了知识共享,共同进步,当然,还有一些自恋。如果是为了推广的话,我早就用自己的博客程序,用自己的域名了。没有必要一定要寄存在博客园下面。

SEO,好像很大,但是我感觉其实也没有什么特别的东西,技术含量,我感觉不是特别大,感觉就是考虑到周到一些,主打关键字的选择上面,当然,花钱买关键字的除外。

  回复  引用  查看    
2007-11-21 09:06 | 杨正祎      
@飞雪尔
js放在那里要看具体的js要做到事情。显然window.onload要做到事情放在bottom里显然是不太合适的。但是,例如,网站统计系统这样的js绝对应该放在后面,而不是前面。
  回复  引用  查看    
2007-11-21 09:07 | 杨正祎      
@bullion
下一篇会在一周内之放出。现在手头有点忙,所以抽不出来时间。
  回复  引用    
2007-11-23 15:41 | yxin [未注册用户]
内容相当不错!谢谢你的奉献。
  回复  引用  查看    
2007-11-27 08:03 | 韩现龙      
文章确实不错。
不过。。。
如果是翻译的,请注明翻译字样吧。
如果是自己的体会,请不引用过多的原文吧。
  回复  引用  查看    
2007-11-27 09:37 | 杨正祎      
@韩现龙
介于翻译和读后感之间的文章。
  回复  引用  查看    
2007-11-27 12:24 | 韩现龙      
@杨正祎
哈哈。兄台真是幽默。好!

  回复  引用    
2007-11-28 09:08 | 周建波 [未注册用户]
提高网页效率是比较重要学习了
  回复  引用  查看    
2007-11-28 09:58 | SPARON      
楼主说的最多的就是“如果,你对此有兴趣,可以咨询贵公司的网站服务器管理员。” 只是点到为止,说了点表皮,太不够深入了。
  回复  引用  查看    
2007-11-28 10:07 | 杨正祎      
@SPARON
小弟才疏,对于不是自己擅长的领域,不敢做太多评述。望见谅。
  回复  引用    
2007-11-28 11:10 | sunlovesea [未注册用户]
学习
  回复  引用    
2007-11-28 14:09 | 草根网 [未注册用户]
好文,收藏至20ju.com
  回复  引用    
2007-11-28 17:04 | Asp技术乐园 [未注册用户]
谢谢楼主
学习了
收藏至www.ffasp.com
  回复  引用  查看    
2007-11-28 17:22 | 杨正祎      
@草根网
分享知识,共同进步。
  回复  引用  查看    
2007-11-28 17:23 | 杨正祎      
@Asp技术乐园
分享知识,共同进步。
  回复  引用  查看    
2007-11-30 10:40 | 哥哥.Net      
网站最基本的东西是什么?——内容?SEO(搜索引擎优化.........?都不对!是速度!


首先是内容,其次是速度。把内容那一项去掉吧,挺吓人的,内容不能吸引访问者那整个项目就已经失败了。

愚见,愚见 :-)
  回复  引用  查看    
2007-11-30 21:14 | 杨正祎      
@哥哥.Net
来做个比喻:A网站有1000篇文章,但是没篇文章都需要1分钟才能打开。而B网站只有100篇,但是每个页面都只要6s就可以打开,你会去那个网站?
  回复  引用  查看    
2007-12-03 20:29 | 哥哥.Net      
◎杨正祎

内容,并不是指内容数量的多少...,如果1000篇文章都是我需要的,我宁愿等1分钟,B网站速度很快,但纯粹是无用的东西,我想也没人愿意看。此内容非彼内容,这点需要自己操作一些项目深深体会。

codeplex够慢吧,但我愿意等:)sf够慢吧,我也愿意等:)

我的提法只是建议作者改一下说法,没有强调速度的次要性,所以你问我的那个问题你自己回答吧。

又浪费了点时间,吹毛求疵了。
  回复  引用  查看    
2007-12-03 23:03 | 杨正祎      
@哥哥.Net
是的,是的,这样一说,我也感觉我的说法有点过分了。当时,纯粹就是为了达到一个“排比句”的效果,所以瞎凑了一些话,呵呵~
我的感觉是这样的:
第一:内容。
第二:用户体验(包括速度,用户操作等)。
第三:SEO(酒香也怕巷子深呀)

抱歉。有时候,为了达到某种语文效果,没有进行慎密的考虑。下次,一定注意。呵呵。
  回复  引用    
2007-12-27 13:51 | 徐迎霞 [未注册用户]
楼主写成这样已经不容易了,大家应该鼓励之~
  回复  引用  查看