Hello World
Spiga

谈*静态页*(或网页*静态化*)的时候,请区分一些概念

2009-07-05 01:37 by 老赵, 27816 visits

“静态页”,在Web应用程序开发中是很常见的概念。只是我发现目前还是有相当部分的朋友,在这方面的存在一定的误区。因此现在独立写一篇文章,也想把一些问题讲讲清楚,以后在讨论的时候也好有个准。

不久前有朋友写了一篇题为《提供生成静态页核心代码》的文章,介绍了一种“向硬盘写入页面文件”的方式。这篇文章的内容在此并不多作讨论,这里引用一下作者给出的摘要:

网页生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全。前台脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度。

这种说法存在一个严重的问题,因为它混淆了两个概念:“静态页”有利于网站性能,和“静态页”有利于SEO。有朋友可能会说:“这两点说的都没有错啊,不信你去搜索引擎上查一下,都有很多资料”。是的,这两种说法都能在搜索引擎上找出“依据”来,只可惜在这种两种情况下的“静态页”所指的内容,或者说是“做法”完全不同,可以说没有任何关系。换句话说,这里造成“混淆”的原因是“指代不明”。为了方便阐述,在本文接下来的部分中将尽可能避免“静态页”,“静态化”等词语,而是使用以下两种区分明显的说法进行阐述:

  • 规范页面URL
  • 缓存页面内容

规范页面URL

如今在开发的Web应用程序时,往往需要从客户端获取一些信息,然后根据这些信息生成页面。例如,我们需要从客户端获取一个“页码”,然后在页面上呈现出这一页的内容。从客户端传递信息的方式有多种,其中最常见的便是通过Query String进行传递。例如,我们可以通过Article.aspx?id=3这样的方式来请求id为3的文章。不过如果纯粹使用Query String来传递信息的话,一个URL可能会带有许多项Query String。例如ArticleList.aspx?page=3&keywords=helloworld&category=6&....。

有种说法是,这样的URL由于明显是动态的,因此搜索引擎对它的处理会有所负面倾斜,例如将其权值放低。因此,很多程序都会把为URL规范为特别的形式,例如Article/3,甚至是Article_3.html。使用htm或html作为URL的结尾,是为了“欺骗”搜索引擎,让搜索引擎以为这是一个直接从存储设备上直接读取的资源,它不会改变,因此“它的权值会相对提高”。实际上老赵并不同意这个说法,而且似乎也没有实际案例可以证明这一点——当然我也无法证否,因此无法判断这个说法的正确性。不过这篇文章并不是在追究这个问题,在这里我们暂且认为它有道理吧。

要实现这点,我们所要实现的是进行URL重写。URL重写的目的,是在服务器端把客户端请求的URL(如Article_3.html)当作另一个请求进行处理(如Article.aspx?id=3)。请注意,这个工作是在服务器端完成的:

客户端 服务器端
Article_3.html Article_3.html => Article.aspx?id=3 => 处理 => 输出

对于搜索引擎的爬虫来说,它根本意识不到这个URL是在直接读取资源,还是经过了动态的请求。我们是Web应用程序的编写者,对于一个请求我们可以使用我们任意的方式进行处理,想欺骗搜索引擎还不是易如反掌?不过这种做法对于网站性能来说是否有帮助?没有,肯定没有。

这种改变URL,想要获取更好SEO效果的做法,有些人也会把它叫做“伪静态化”。老赵不知道这种说法合不合适,我是从来不会使用这样的说法的。

缓存页面内容

动态生成一个页面的开销往往很大,例如需要多次查询数据库或者外部服务。为了减少服务器端的开销,为了加快网站的运行效率,有时候在服务器端会将一个页面的整体内容保存为一个文件,这样每次在服务器端获取客户端请求的时候,只要读取相应的文件即可,而不需要重新查询数据库或外部服务并重新生成页面内容:

客户端 服务器端
Article.aspx?id=3 Article.aspx?id=3 => 读取文件 => 输出

同样的,这些事情完全是在服务器端进行的处理,搜索引擎的爬虫对此一无所知。即使搜索引擎认为Article.aspx?id=3这样的请求是由服务器端即时生成的(当然搜索引擎真不会考虑这些),我们编写的服务器端逻辑同样可以直接读取磁盘上的文件,并且直接输出。这种做法自然是为了效率,不过……

这种做法和SEO有没有关系?没有任何关系,因为爬虫根本不知道我们做了这些。

这种做法是否需要在硬盘上生成一个html文件?没有必要,我可以生成txt文件,可以生成jeffz文件,甚至我可以不生成文件,而是将页面内容直接存放在内存中,甚至是高性能的Key/Value Store里。

这种做法是否需要把URL修改为html结尾?没有必要,URL改不改都无所谓,改成什么也都无所谓。

总结

有时候事情其实就是那么简单,但是还是会让人混淆。一句话听上去很正确,但是一旦“指代不明”,正确的话也变成错误的了。例如本文一开始引用的文章,它是为了“缓存页面内容”而使用的做法,这个做法和SEO没有任何关系,因此说“生成html网页有利于被搜索引擎收录,不仅被收录的快还收录的全”是将其目的与“规范页面URL”混淆了起来。错误产生在这里。在那片文章后面的评论中,有朋友回复说目前的搜索引擎已经不关心URL是否是html还是别的什么形式了。这种说法可能也是正确的,不过并没有谈在点子上。因为无论搜索引擎如何处理HTML,文章的内容都和搜索引擎没有一丝一缕关系。

因此,如果您以后要谈“静态页”或网页“静态化”的时候,请区分您究竟是在谈“规范页面URL”还是“缓存页面内容”。

如果您说“静态页有助于SEO”,明白人知道您是再指“规范页面URL”,而某些朋友可能就会认为您是指在服务器端缓存页面内容。

如果您说“静态页有助于提高网站性能”,明白人知道您是指“缓存页面内容”,而某些朋友可能就会认为您是指使用“URL重写”来规范URL样式。

如果您说“静态页,既有助于SEO,又有助于提高网站性能”,那么(我希望)明白人就会带您来看现在这篇文章,而某些朋友可能就会……哎哎。

补充说明

有朋友提到静态资源适合被CDN分发,其实不然。CDN难道不能分发动态请求生成的内容了吗?对于CDN来说,动态和静态是没有区别的。不说CDN,就说Squid吧,Squid知道后面连接的请求是静态还是动态的吗?是Windows系统还是Linux吗?其实这就是“分层”,抽象出来以后完全不知道后端的递交方式。而且换个角度想,世界上有“静态请求”这个东西吗?不都是需要经过Web服务器处理的吗?只不过,一个是复杂运算,一个是直接读取硬盘文件。对访问者来说,是看不出任何区别的。CDN分发的也只是“请求内容”而不会关心“内容的生成方式”。

此外,有朋友给出了一份应该说“比较权威”的说明,各位不妨参考一下:动态网址与静态网址

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

124 条回复

  1. 飞林沙
    *.*.*.*
    链接

    飞林沙 2009-07-05 01:51:00

    明白老赵意思....
    之前看过一种说法说,说一旦把页面静态化,在HTTP通道里会有一些不同。意思就是说用户访问.html,那么不会通过httphandler和httpmodule。
    因而导致也就是您说的那个伪静态化的页面效率提高,请问有没有什么道理呢?

  2. 一抹微蓝
    *.*.*.*
    链接

    一抹微蓝 2009-07-05 01:55:00

    是不是搜索引擎对动态的内容真的有偏见?google会对.aspx有特殊处理吗?呵呵,玩笑啊,google和ms是对头。

  3. 老赵
    admin
    链接

    老赵 2009-07-05 01:57:00

    @飞林沙
    我不知道啥叫伪静态化。如果是别人嘴里的“伪静态化”也是指URL重写,而不是你说的在硬盘上生成html文件吧。
    所以我说我从来不提“伪静态化”这种说法,太容易混淆,定义基本上就没有明白过。

    我猜想你的意思是说,服务器直接处理硬盘上的html文件,会比asp.net处理性能高是吧(因为不经过ISAPI)。
    你可以试试看,如果打开iis的kernal cache来缓存asp.net页面,它性能会比加载硬盘上html还要高的多。
    同理,换作IIS 7的Integrated Pipiline模式,html也会经过托管HttpModule处理,但性能还是比IIS 6要高。

    所以,就算有性能区别,也是web服务器进行的特殊处理,而我讲的是通用的道理。

  4. 老赵
    admin
    链接

    老赵 2009-07-05 02:06:00

    一抹微蓝:是不是搜索引擎对动态的内容真的有偏见?google会对.aspx有特殊处理吗?呵呵,玩笑啊,google和ms是对头。


    如果没有人可以证实给我看的话,我是不会相信aspx被歧视这种说法的。
    而且,我至今也没有看到确切的数据说明html结尾在seo上有优势,我认为这种说法是种臆断。

  5. 郑希强
    *.*.*.*
    链接

    郑希强 2009-07-05 02:08:00

    老赵神仙啦 这么晚还写文章

  6. xland
    *.*.*.*
    链接

    xland 2009-07-05 02:28:00

    @Jeffrey Zhao
    如果老赵是GOOGLE蜘蛛算法的首席设计师
    会不会优先让蜘蛛优先爬.HTML/.htm结尾的网页呢?

  7. 老赵
    admin
    链接

    老赵 2009-07-05 02:36:00

    @xland
    我不会,因为我知道这些都是假的都不是依据。
    有一个参考就是开源搜索引擎实现,例如nutch,看一下它们便是。

  8. 老赵
    admin
    链接

    老赵 2009-07-05 02:37:00

    @郑希强
    因为周末可以睡到中午咯。

  9. xhtml[未注册用户]
    *.*.*.*
    链接

    xhtml[未注册用户] 2009-07-05 02:38:00

    看着就不爽,一帮**都在臆测

    发表者: Juliane Stiller 与 Kaspar Szymanski,搜索质量组
    在跟网络管理员沟通时经常会出现这种情形,一些广为传播的理念可能在过去是正确的,但是可能已不再切合目前的情况了。当我们最近在跟几个朋友谈及关于网址的结构时就碰到这种情况。其中一个朋友很担心动态网址的使用,甚至认为"搜索引擎无法处理动态网址"。另外一个朋友觉得动态网址对搜索引擎来说完全不是问题,那些都是过去的事了。还有一个甚至说他从来都搞不懂动态网址和静态网址相比有什么区别。对于我们来说,这一刻使我们决定要好好研究一下动态网址和静态网址这个话题。

    http://googlechinablog.com/2008/10/blog-post_20.html

  10. oBlank[未注册用户]
    *.*.*.*
    链接

    oBlank[未注册用户] 2009-07-05 02:42:00

    常常听到的是“静态(内容)页面”“伪静态”,少有听到“静态页”这个词,
    URL重写,主要目的还是对用户友好吧,SEO效果怎样倒真不清楚,都是一些坊间传言,至今没有看到一篇以数据说明的文章来谈这个问题

  11. 老赵
    admin
    链接

    老赵 2009-07-05 02:45:00

    @xhtml
    虽然你的说法实在不好,但是你给的资料很让人满意。
    虽然你给的资料很让人满意,但是你的说法实在不好。

  12. 老赵
    admin
    链接

    老赵 2009-07-05 02:46:00

    @oBlank
    有可能的确是为了对用户友好吧,我也不知道。
    至于SEO效果,我也认为,这些更接近“坊间传言”。

  13. xhtml[未注册用户]
    *.*.*.*
    链接

    xhtml[未注册用户] 2009-07-05 03:17:00

    Jeffrey Zhao:@xhtml
    虽然你的说法实在不好,但是你给的资料很让人满意。
    虽然你给的资料很让人满意,但是你的说法实在不好。



    呵呵 误解就不好了
    前半句只代表我的情绪
    后半句只代表事实
    通配符也只代表这一群人

    http://www.douban.com/group/topic/1117286/

  14. 新余论坛[未注册用户]
    *.*.*.*
    链接

    新余论坛[未注册用户] 2009-07-05 04:28:00

    学习了

  15. DiggingDeeply
    *.*.*.*
    链接

    DiggingDeeply 2009-07-05 08:07:00

    唉,估计有些人的想法都是“听人说的”,没有经过自己的论证,而人云亦云,以讹传讹,结果造成了误解。
    借用北京台天下收藏的主题:“去伪存真”

  16. kilonet[未注册用户]
    *.*.*.*
    链接

    kilonet[未注册用户] 2009-07-05 08:13:00

    呵呵,静态或者伪静态的链接的确要比 “?query”形式比较好些。

    俺的论坛没伪静态化之前,论坛收录比较少(几百),伪静态化后,收录了很多页面(上千)

    网址就不贴了,免得被疑做ad

  17. mmgg[未注册用户]
    *.*.*.*
    链接

    mmgg[未注册用户] 2009-07-05 08:36:00

    也是没办法的事情吧
    有的时候,不是所有的东西都容易证明的。
    有的时候,不是所有的东西自己都有时间证明的。
    有的时候,不是所有的东西自己都会证明的。

    比如wcf中的东西 基本都是看书和资料,有很多我都没去证明 唉!

  18. 淘者天下2
    *.*.*.*
    链接

    淘者天下2 2009-07-05 09:08:00

    呵呵,静态或者伪静态的链接的确要比 “?query”形式比较好些。

  19. Kevin Zou
    *.*.*.*
    链接

    Kevin Zou 2009-07-05 09:19:00

    我也一直反对将动态内容变成静态的物理文件,不管从哪方面来说(维护,更新,可控性,灵活性)都是不好的,相反,我还经常将所谓的静态内容(如js,css)换成aspx来处理,增加可控性和可维护性

  20. Arthraim
    *.*.*.*
    链接

    Arthraim 2009-07-05 09:31:00

    老赵说了两种情况
    第一种、规范URL但不缓存网页,利于SEO
    第二种、缓存网页但不规范URL,利于性能
    那的确是可以两者兼得的吧~

  21. goodfish[未注册用户]
    *.*.*.*
    链接

    goodfish[未注册用户] 2009-07-05 09:31:00

    事实上,早期搜索引擎对于×××.apsx?×××=×××这样的形式收录的确是有问题的,因为当时的引擎在数据库记录上是抛掉?以后的部分的,但近5年以来已经基本上没有什么区别了。

  22. Dnnmix
    *.*.*.*
    链接

    Dnnmix 2009-07-05 09:32:00

    在web2.0时代,以互动为前提下生成静态html页面的做法还能跟得上页面内容快速变化的要求吗? 我看生成静态html页的做法也只适用于archive了, 现在应该是善用缓存的时代了。

    最近老有人和我拿html说事, 我估计他们也是没搞清楚url重写和正生成静态html的意思,在不就是有些产品误导大众。

    谢谢老赵声明。

  23. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 09:34:00

    Article.aspx?id=3 Article.aspx?id=3 => response.redirect静态文件地址 => 输出
    不就有意义了么 问题主要出在读取硬盘文件上吧

  24. 1远航1[未注册用户]
    *.*.*.*
    链接

    1远航1[未注册用户] 2009-07-05 09:48:00

    同意楼上,但是就目前国内来说,好多人还是想生成静态HTML.就拿ASPX来说,处理好了性能一点也不比静态HTML差,在管道中使用ResolveRequestCache事件来处理缓存后的HMTL内容是相当好的作法.

  25. 1远航1[未注册用户]
    *.*.*.*
    链接

    1远航1[未注册用户] 2009-07-05 09:49:00

    同意楼上,但是就目前国内来说,好多人还是想生成静态HTML.就拿ASPX来说,处理好了性能一点也不比静态HTML差,在管道中使用ResolveRequestCache事件来处理缓存后的HMTL内容是相当好的作法.

  26. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 09:55:00



    url rewrite 最大的受益者:

    1 不规范的浏览器
    比如摩托罗拉手机上内置的摩托罗拉浏览器,打开文件只认扩展名,不认mime.某次我要用参数返回一个jad文件 当时没有配置url rewrite 不得已url只能写成 xxxx.aspx?id=15&t.jad

    2 扒整站的离线浏览工具
    窄带时代的离线浏览工具 具有爬虫的最初特征 但是从不遵守规范。这一类工具一般使用文件夹 而不是用数据库 务求物理结构与网站结构相同。
    当你拿到满文件夹的
    bbs.aspx_id=1
    bbs.aspx_id=2
    你肯定是高兴不起来的



    至于搜索引擎对get参数的分析,反倒是由于太简单了 不大可能做不到吧。。。。。

  27. kiler
    *.*.*.*
    链接

    kiler 2009-07-05 09:58:00

    对于访问量很大的网站来说,生成Html的方案肯定要比aspx缓存的方案要好,如果是html的话可以方便进行优化,可以用apache做web服务器,apache处理html的速度要比iis好,web服务器不再限于windows服务器,可以方便的做集群,如果是aspx的话,不是不能,是相当麻烦。国内大的门户网站都是采用的静态化成html技术的。

  28. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 09:59:00

    引用kilonet:呵呵,静态或者伪静态的链接的确要比 “?query”形式比较好些。

    俺的论坛没伪静态化之前,论坛收录比较少(几百),伪静态化后,收录了很多页面(上千)

    网址就不贴了,免得被疑做ad


    这个也是要承认的 我以前的公司也遇到过这个例子 但是上次出现这个反差是在2003年。 之后我一直就没做过网站的前台了 难道这几年bot都没有进化 -0-

  29. janlay[未注册用户]
    *.*.*.*
    链接

    janlay[未注册用户] 2009-07-05 10:04:00

    静态页 (*.html)在几年前的SEO效果确实是事实,不过现在存储器成本大降,搜索引擎之间的竞争也非常激烈,所以动态页(*.*?xxx=aaa)的抓取频率也提高很多了,现在对于SEO来说,似乎已经没什么优势了。

    静态文件还有个重要功能似乎上面没人提及,那就是便于 CDN 分发,对于大型网站来说,这是个静态文件最大的优势。

  30. kilonet[未注册用户]
    *.*.*.*
    链接

    kilonet[未注册用户] 2009-07-05 10:29:00

    韦恩卑鄙:
    这个也是要承认的 我以前的公司也遇到过这个例子 但是上次出现这个反差是在2003年。 之后我一直就没做过网站的前台了 难道这几年bot都没有进化 -0-



    呵呵,收录是照样收录,不过效果不一样。你可以去看百度的网页收录帮助,“动态网页的参数尽量少有利于搜索引擎的收录”!



  31. Dnnmix
    *.*.*.*
    链接

    Dnnmix 2009-07-05 10:36:00

    @janlay
    html放到CDN上?!! url都变了怎么被搜索引擎收录啊。 CDN上都是放资源文件的。

  32. Dnnmix
    *.*.*.*
    链接

    Dnnmix 2009-07-05 10:52:00

    kiler:对于访问量很大的网站来说,生成Html的方案肯定要比aspx缓存的方案要好,如果是html的话可以方便进行优化,可以用apache做web服务器,apache处理html的速度要比iis好,web服务器不再限于windows服务器,可以方便的做集群,如果是aspx的话,不是不能,是相当麻烦。国内大的门户网站都是采用的静态化成html技术的。



    我一直想不明白,如果是信息更新很快的网站就要频繁生成html,还要同步到所有的web服务器,这样效率会很高嘛,除非你不关心信息的及时性。

    怎么想都是用分布式数据缓存来作为中间层存储更新的信息,再定时把持久化数据到数据库的效率比较高。另外asp.net 也可以做web farm集群服务器。

    都是纸上谈兵了,希望大家指点一二

  33. kiler
    *.*.*.*
    链接

    kiler 2009-07-05 11:25:00

    @Dnnmix
    更新缓存和更新文件本质上没什么区别,更新文件的话只不过是程序写得复杂点,只更新需要更新的文件,不是所用文件都更新,html的显示肯定要比aspx快,这个没的说,html文件根本就不需要走aspx页面的生命周期。

    asp.net的集群只是有这个说法,真正多少大型案例用了呢,国内大型门户都是几k台的服务器做集群(windows服务器集群貌似做不到这个数量吧,就算做到这个数量,操作系统版权费也是一笔不小的开销),如何处理html更新与同步那是web服务器的事情,不关后台应用服务器的事,后台应用服务只要即时发送更新消息给web服务器就行了。国内大型门户的应用案例证明了静态化技术是可行的。

  34. Reginald
    *.*.*.*
    链接

    Reginald 2009-07-05 11:56:00

    我个人一直也一直觉得“为静态化”或者静态化页面对搜索引擎收录有帮助是扯淡,
    至少就我观察 GOOGLE部分关键字时动态页面反而排在静态页面之前。
    合适的URL重写, 可能能改善一部分英语较好用户的用户体验。

  35. seo-seo-seo[未注册用户]
    *.*.*.*
    链接

    seo-seo-seo[未注册用户] 2009-07-05 11:59:00

    @xhtml
    很不多的一篇文章。呵呵!

  36. colorsmart[未注册用户]
    *.*.*.*
    链接

    colorsmart[未注册用户] 2009-07-05 12:09:00

    恩,把两者合起来不就行了么?不是很懂web

  37. 凡客诚品哦[未注册用户]
    *.*.*.*
    链接

    凡客诚品哦[未注册用户] 2009-07-05 12:27:00

    不错啊

  38. 老赵
    admin
    链接

    老赵 2009-07-05 13:36:00

    kilonet:
    呵呵,静态或者伪静态的链接的确要比 “?query”形式比较好些。
    俺的论坛没伪静态化之前,论坛收录比较少(几百),伪静态化后,收录了很多页面(上千)
    网址就不贴了,免得被疑做ad


    只是,你如何证明是链接形式导致的问题呢?是否你不去管它,过了几个月就好了呢?影响SEO的因素太多。

  39. 老赵
    admin
    链接

    老赵 2009-07-05 13:38:00

    Arthraim:
    老赵说了两种情况
    第一种、规范URL但不缓存网页,利于SEO
    第二种、缓存网页但不规范URL,利于性能
    那的确是可以两者兼得的吧~


    自然可以两者兼得,不过那必须同时运用两种完全没有关系的做法。

  40. 老赵
    admin
    链接

    老赵 2009-07-05 13:41:00

    kiler:
    asp.net的集群只是有这个说法,真正多少大型案例用了呢,国内大型门户都是几k台的服务器做集群(windows服务器集群貌似做不到这个数量吧,就算做到这个数量,操作系统版权费也是一笔不小的开销),如何处理html更新与同步那是web服务器的事情,不关后台应用服务器的事,后台应用服务只要即时发送更新消息给web服务器就行了。国内大型门户的应用案例证明了静态化技术是可行的。


    有一个MySpace就足够了。
    其实一个web应用程序的软件栈很长,从最前端负载均衡,到后面的Web服务器,到再后面的数据库。Windows + ASP.NET只是占了中间的Web服务器一层。
    这个职责ASP.NET作的非常称职。
    Licence费用的话,其实很低的(记得买Web Edition而不要Enterprise)。

  41. 老赵
    admin
    链接

    老赵 2009-07-05 13:44:00

    janlay:
    静态文件还有个重要功能似乎上面没人提及,那就是便于 CDN 分发,对于大型网站来说,这是个静态文件最大的优势。


    CDN难道不能分发动态请求生成的内容了吗?对于CDN来说,动态和静态的区别是什么呢?
    不说CDN,就说Squid吧,Squid知道后面连接的请求是静态还是动态的吗?是Windows系统还是Linux吗?
    其实这就是“分层”啊,抽象出来以后完全不知道后端的递交方式。
    CDN分发的也只是“请求内容”而不会关心“内容的生成方式”

  42. 老赵
    admin
    链接

    老赵 2009-07-05 13:52:00

    各位也可以换个角度想,世界上有“静态请求”这个东西吗?
    不都是需要经过Web服务器处理的吗?
    只不过两者处理方式不同而已,一个是略为复杂的运算,一个是直接读取硬盘文件。
    对访问者来说,是没有任何区别的。

  43. njhttp[未注册用户]
    *.*.*.*
    链接

    njhttp[未注册用户] 2009-07-05 15:12:00

    总感觉老赵的文章有些太理论化。

  44. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 15:33:00

    >一个是略为复杂的运算,一个是直接读取硬盘文件。

    这个保留意见 很多静态化提升性能的关键在于 web host本身的支持。

    iis没有提升很多可能是iis不够好 而不是因为静态不是个好办法

    另外,动态叶面对于gzip流的处理 原理和性能 我也都存有疑问。。。。

  45. 老赵
    admin
    链接

    老赵 2009-07-05 15:35:00

    @韦恩卑鄙
    我这么说的时候又没有在谈性能。
    我说的是,对于请求方来说,是否是所谓“静态请求”是不关心的,也是没法知道的。
    对于请求方来说,都是web服务器给它的数据,都是要经过处理的,只是运算方式不同。
    对于请求方来说完全没有区别。

    还有,你说的“静态化”究竟是指什么呢?
    “静态化”是一个意思非常不明确的词,已经造成非常大的误区了。

  46. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 15:36:00

    这样说我就了解了 误会你的观点了

  47. 补丁
    *.*.*.*
    链接

    补丁 2009-07-05 15:39:00

    哈哈,随口提一句,变形金刚vs终结者,后者才是必败无疑
    因为变形金刚的战场是全宇宙,地球灭了,他们还能生存,终结者似乎还没迈出这一步

  48. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 15:53:00

    老赵 我怎么觉得
    "你觉得静态化含混是因为你不愿承认伪静态这个概念"


    静态就是看起来静态而且的确静态 --对应静态化
    伪静态就是看起来静态其实不是静态 --对应伪静态化
    动态就是看起来动态 也的确挺动态 --对应动态化

    这不是很符合你说的 "对于请求方来说,是否是所谓“静态请求”是不关心的,也是没法知道的。"这个角度么

  49. 老赵
    admin
    链接

    老赵 2009-07-05 15:55:00

    @韦恩卑鄙
    我没有不承认啊(文章里都提到了),只是我不喜欢这个词,因为容易混淆。如果谁说了“伪静态”,我会和他确认半天,直到明确了意思为止。
    我平时会说“URL Rewrite成好看的地址”,“在服务器端生成整页的缓存,放在硬盘上”这种不会产生歧义的方法。

  50. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 15:59:00

    恩 容易混淆是因为用错的人太多 哎

    就好像LINQ 和LINQ TO SQL 一样

    LINQ 对于扎实的人 就是查询语言
    静态化 对于扎实的人 就是生成静态文件

    用错的人多了 大家互相交流都要再三确认了 郁闷

  51. 瞧瞧[未注册用户]
    *.*.*.*
    链接

    瞧瞧[未注册用户] 2009-07-05 15:59:00

    静态页”有利于网站性能,和“静态页”有利于SEO 的说法是正确的,有大量的网站案例了.

    静态页既有利于网站性能更有利于seo.
    因为静态页面调用速度快,不像动态页服务器还要发比较多的时间处理所以有利于网站性能.

    因为静态页面调用速度快,蜘蛛每次抓取它的时候就快,蜘蛛偏爱返回速度快的网页.所以静态页相比动态页就有优势.

    然道静态页相比动态页对网站性能对蜘蛛没有优势吗

  52. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 16:02:00

    当然不排除 摆渡还在用99年蜘蛛的可能性

  53. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 16:02:00

    瞧瞧:
    静态页”有利于网站性能,和“静态页”有利于SEO 的说法是正确的,有大量的网站案例了.

    静态页既有利于网站性能更有利于seo.
    因为静态页面调用速度快,不像动态页服务器还要发比较多的时间处理所以有利于网站性能.

    因为静态页面调用速度快,蜘蛛每次抓取它的时候就快,蜘蛛偏爱返回速度快的网页.所以静态页相比动态页就有优势.

    然道静态页相比动态页对网站性能对蜘蛛没有优势吗


    兄弟你多少年没看蜘蛛工作原理了 我去年被上了一课 现在的蜘蛛已经不是99年的蜘蛛了

  54. 老赵
    admin
    链接

    老赵 2009-07-05 16:06:00

    @韦恩卑鄙
    而且其实我也不觉得有什么“静态请求”这样的说法。就像我说的,其实任何请求都是需要经过web服务器处理,只是处理方式不同而已。
    我也不认为动态请求的性能肯定低于读取静态页面,完全是看怎么处理的。读硬盘上的文件就不用动态处理了吗?肯定不是,需要根据时间生成Last-Modified,根据内容生成E-Tag,都是需要运算的。

    此外,大量细小的静态页面读取,对于磁盘的访问也会有压力。所以如“手机之家”把所有图片都放在数据库中,全部动态生成图片数据流,前端再用Varnish做缓存,这样对于数据备份和性能都有保证。
    而且,如果完全是在内存里的数据,性能就比读硬盘要高很多。如IIS的Kernal Cache,还有各缓存服务器,都是在这方面有优化。

    还有,缓存服务器把数据缓存在内存中,获得请求后直接输出,算是静态的还是动态呢?
    更进一步,有人为缓存服务器写一个模块,根据客户端的cookie选择把内存中不同数据快拼接起来输出(没有真正的拼接操作哦,就是依次输出),这是个动态的效果,但是性能就比生成一个HTML文件要高啊。

  55. 老赵
    admin
    链接

    老赵 2009-07-05 16:12:00

    @韦恩卑鄙
    对了,其实Web服务器大都支持include,这说明其实也都是动态处理的。:)

  56. 沉默杨仔
    *.*.*.*
    链接

    沉默杨仔 2009-07-05 16:19:00

    响应速度快对收录绝对是有帮助的!!(这也是为什么说静态页比动态页相对来说有优势的原因。注意:我说的只是相对,如果响应速度动静态一样。排除其它因素。那么收录效果是一样的)
      原因1:在google webmaster tools中有一项抓取速度调整。大家可以调整网站抓取速度做试验。。
      原因2:所说的其它因素就是动态网页中的postback.大大影响页面收录效果。所以动态页面应该特别注意postback给蜘蛛带来的影响 

  57. 老赵
    admin
    链接

    老赵 2009-07-05 16:24:00

    @沉默杨仔
    那也是相应速度而已,和静态动态无关。
    你生成所谓的“静态页”也只不过是一种缓存而已,优化网站性能的因素有很多。
    所以,应该强调的是“网站性能”,而不是所谓“动态静态”。
    至于PostBack,也是因为爬虫不支持post,而不是动态静态的关系。
    抓住事物关键很重要。

  58. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 16:25:00

    的确是这样 :D


    我记得 ssi 在iis6开始就变成默认安装的可选项了 因为这个功能多少也有点影响效率

    关闭ssi的话
    貌似 html的include 就不再被支持了
    asp和aspx的支持是强制打开的 不受这个影响

    症状见
    http://topic.csdn.net/t/20040423/09/2999112.html

    不过我也不太确定

    ——————————————————
    再次确认了下 对于静态文件的include在高级版本iis 被限定为 shtml shtm 等文件 也就是说这些文件和别的isapi组件被解释执行了 。。。。 也就是比asp轻量级一些的并列组件阿。。。

    也就是说 .html文件并没有被动态执行。

  59. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 16:27:00

    Jeffrey Zhao:
    @沉默杨仔
    那也是相应速度而已,和静态动态无关。
    你生成所谓的“静态页”也只不过是一种缓存而已,优化网站性能的因素有很多。
    所以,应该强调的是“网站性能”,而不是所谓“动态静态”。
    至于PostBack,也是因为爬虫不支持post,而不是动态静态的关系。
    抓住事物本质很重要。


    赞成。 iis对静态文件的缓存也是有限的 很可能不如你自己在内存中的缓存来的好

  60. 酷勤经验
    *.*.*.*
    链接

    酷勤经验 2009-07-05 16:32:00

    1、在谷歌http://googlechinablog.com/中确实多次提到" target="_blank">http://googlechinablog.com/中确实多次提到:现在动态网址google都可以正常索引,并且不建议搞成伪静态的

    2、但是有些SEOer认为google虽然说能正常索引,但是http://googlechinablog.com/ 却没有文章讲到动态网址和伪静态网址的排名,也就是说动态网址会不会影响排名,google并没有明确说明;

    3、即使google对动态网址能正常索引,并且不影响排名,但是中文搜索是百度市场最大,即使Google说没问题,大家还得考虑百度索引和排名。

  61. 老赵
    admin
    链接

    老赵 2009-07-05 16:33:00

    @酷勤经验
    如何证明,对baidu是有影响的呢?

  62. 沉默杨仔
    *.*.*.*
    链接

    沉默杨仔 2009-07-05 16:35:00

    呵呵。可能我的“相对论”没有表述清楚,我的观念也是“应该强调的是“网站性能”,而不是所谓“动态静态”。”但一般服务器IO性能都强于数据库读取性能,我只是想说“IO性能比读取数据库性能强的时候”静态页比动态页好。读取数据库性能比IO性能好的时候。动态页比静态页好。
      谢谢DEFFREY ZHAO!!

  63. 瞧瞧[未注册用户]
    *.*.*.*
    链接

    瞧瞧[未注册用户] 2009-07-05 16:37:00

    韦恩卑鄙:

    瞧瞧:
    静态页”有利于网站性能,和“静态页”有利于SEO 的说法是正确的,有大量的网站案例了.

    静态页既有利于网站性能更有利于seo.
    因为静态页面调用速度快,不像动态页服务器还要发比较多的时间处理所以有利于网站性能.

    因为静态页面调用速度快,蜘蛛每次抓取它的时候就快,蜘蛛偏爱返回速度快的网页.所以静态页相比动态页就有优势.

    然道静态页相比动态页对网站性能对蜘蛛没有优势吗


    兄弟你多少年没看蜘蛛工作原理了 我去年被上了一课 现在的蜘蛛已经不是99年的蜘蛛了


    这不需要上课.用脚丫想想就明白了.

    如果一个网站有50%的静态页面,蜘蛛来抓的时候就发现这个网站的网页都返回很快,就会认为这是个站点性能好.

    静态页面相比动态页面对于网站性能和seo肯定是很有优势的.这点居然还有人在怀疑?

    不要讲一些特例来说明静态页面不如动态页面快,这样没有意思.我们要说的是普遍情况.

    普遍情况请求服务器中的静态页面总是比请求动态页面的快.这还要怀疑吗?

  64. 老赵
    admin
    链接

    老赵 2009-07-05 16:39:00

    @瞧瞧
    那么你应该强调的是网站性能对SEO的影响,而不是静态页或是动态页。
    抓住事物本质很重要。
    我晚上写一篇文章吧,大概叫做:世上并没有所谓的*静态页*。

  65. 酷勤经验
    *.*.*.*
    链接

    酷勤经验 2009-07-05 16:44:00

    @Jeffrey Zhao
    这个或许很难证明吧。

    1、但是一直以来就认为:伪静态或者静态更有利于排名,原因据说是以前搜索引擎认为动态网页的内容容易变化,可信度比较低一点。

    2、百度自己的内容网页来看,百度百科,百度知道都是html;
    各大门户网站也都是搞成(s)html的伪静态网页,应该不会没有原因的!

    3、反正大家是确信:伪静态或者静态更有利于排名,不管是不是这样,大家是另可信其有。

    4、现在有些系统为了性能也搞真正的静态网页,比如dedecms就是直接生成静态的网页;而康盛最新CMS系统SupeSite7.0则同时提供伪静态和静态两种功能

  66. 老赵
    admin
    链接

    老赵 2009-07-05 16:46:00

    @酷勤经验
    为了性能自然可以理解,呵呵。
    关于html地址是否有利于SEO,我也没有证据可以证明或证反,我就不参与讨论了,呵呵。

  67. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 16:56:00

    酷勤经验:
    @Jeffrey Zhao
    这个或许很难证明吧。

    1、但是一直以来就认为:伪静态或者静态更有利于排名,原因据说是以前搜索引擎认为动态网页的内容容易变化,可信度比较低一点。

    2、百度自己的内容网页来看,百度百科,百度知道都是html;
    各大门户网站也都是搞成(s)html的伪静态网页,应该不会没有原因的!

    3、反正大家是确信:伪静态或者静态更有利于排名,不管是不是这样,大家是另可信其有。

    4、现在有些系统为了性能也搞真正的静态网页,比如dedecms就是直接生成静态的网页;而康盛最新CMS系统SupeSite7.0则同时提供伪静态和静态两种功能




    2003年我被告知 unix 和linux web站点的细碎文件效率高于windows很多

    这里可能是iis的问题 甚至ntfs的问题 不能用别的操作系统来套windows阿。。。

  68. 老赵
    admin
    链接

    老赵 2009-07-05 17:00:00

    @韦恩卑鄙
    Windows的文件系统在处理大量小文件时的确是个土鳖,很多时候瓶颈会出现在这里。
    如果在Windows下操作文件的话,是该注意一下不要生成太多小文件。

  69. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 17:02:00

    瞧瞧:

    韦恩卑鄙:

    瞧瞧:
    静态页”有利于网站性能,和“静态页”有利于SEO 的说法是正确的,有大量的网站案例了.

    静态页既有利于网站性能更有利于seo.
    因为静态页面调用速度快,不像动态页服务器还要发比较多的时间处理所以有利于网站性能.

    因为静态页面调用速度快,蜘蛛每次抓取它的时候就快,蜘蛛偏爱返回速度快的网页.所以静态页相比动态页就有优势.

    然道静态页相比动态页对网站性能对蜘蛛没有优势吗


    兄弟你多少年没看蜘蛛工作原理了 我去年被上了一课 现在的蜘蛛已经不是99年的蜘蛛了


    这不需要上课.用脚丫想想就明白了.

    如果一个网站有50%的静态页面,蜘蛛来抓的时候就发现这个网站的网页都返回很快,就会认为这是个站点性能好.

    静态页面相比动态页面对于网站性能和seo肯定是很有优势的.这点居然还有人在怀疑?

    不要讲一些特例来说明静态页面不如动态页面快,这样没有意思.我们要说的是普遍情况.

    普遍情况请求服务器中的静态页面总是比请求动态页面的快.这还要怀疑吗?



    这不是很明显么 普遍情况请求服务器中的静态页面总是比请求动态页面的快 就是说明普遍不写缓存的 或者自认为写的东西没有iis缓存写的的好的人更多么。

    这东西搞什么民主?普遍情况算什么? 闭上眼睛跟着坐不思考?
    还是那句话,没有能力写出来比iis更好效率的站点就写静态
    别盲目跟风

  70. 老赵
    admin
    链接

    老赵 2009-07-05 17:05:00

    @韦恩卑鄙
    我看出来,博客园评论的引用功能还是有问题。

  71. 瞧瞧[未注册用户]
    *.*.*.*
    链接

    瞧瞧[未注册用户] 2009-07-05 17:14:00

    Jeffrey Zhao:
    @瞧瞧
    那么你应该强调的是网站性能对SEO的影响,而不是静态页或是动态页。
    抓住事物本质很重要。
    我晚上写一篇文章吧,大概叫做:世上并没有所谓的*静态页*。


    为什么要生成静态页,很大部分是为了减少服务器压力.也就是提高网站性能啊. 提高网站性能是有很多方面的.除了静态页面其它还比如购买高带宽升级服务器优化代码数据库等等.这些都能促进网站性能.蜘蛛喜欢一个速度快的网站这也是肯定的.本来蜘蛛就是在模拟人的思想.

    所以说"静态页面普遍情况下是有利于seo" 这说法是成立的啊
    赵兄:你说话不要那么钻牛角尖啊,也不要举一些很"特"的例子.

    世界上怎么会没有"静态页面"呢,查查html是怎么定义的.有些东西几乎都是常识啊,大众的普遍做法就是证明的例子就是正确的,否则大伙儿早不干了.
    赵,你走火入魔了

  72. 老赵
    admin
    链接

    老赵 2009-07-05 17:20:00

    @瞧瞧
    你还没有看我的文章内容怎么就说我错了呢,呵呵。

    “静态页面普遍情况下有利于SEO”,这个命题是对的,但是没有把握住事物本质,会给人以误导。
    就好比A => B,B => C,所以A => C没有问题,但是我不喜欢说A => C,因为A不是C的本质问题。而且大家对于A有不同的理解,文章里也已经说过了。
    不过你的看法在我的下一篇文章里我也会提到的。别急,我们关注道理,不关注“语言表达形式”。:)

    不过,大众普通使用的做法并不一定是正确的阿,常识也有错误的,这样的例子难道不常见吗?
    例如早晨空气新鲜,千百年来大家的认识,到了汽车工业兴起之后,早上反而是空气最脏的了——但是大家还是喜欢“晨跑”,呵呵。
    所以,我相信科学的论证方式,而大家都有的常识,只能带给我一定的倾向性,而不能让我确信这是一个事实。
    而我动摇的原因就是,我看到越来越多的道理在反对“html网址对SEO有利”这种看法,而支持它的说法却只有“常识”,“大家都这样认为”,“这还用说吗”这样的说法。

  73. Colin Han
    *.*.*.*
    链接

    Colin Han 2009-07-05 17:22:00

    老赵,这里有Google官方对“静态网址”(也就是“规范页面URL”)对SEO的影响的说法。http://www.googlechinablog.com/2008/10/blog-post_20.html
    看起来影响不仅仅是静态化还是非静态化。而是URL的语义。

  74. 老赵
    admin
    链接

    老赵 2009-07-05 17:26:00

    @Colin Han
    呵呵,我文章里不已经引用了吗?
    其实这篇文章和我说的道理是一样的,爬虫根本不会关心html内容是如何得到的。
    所以它要关注,也最多只能关注到URL的形式——或者说“语义”了。

  75. 瞧瞧[未注册用户]
    *.*.*.*
    链接

    瞧瞧[未注册用户] 2009-07-05 18:06:00

    “爬虫根本不会关心html内容是如何得到的” 很正确
    “静态页面提高网站性能” 很正确
    “网站经常性的性能提高,蜘蛛认为这是个好网站” 很正确
    因此“静态页面普遍情况下是有利seo的”

  76. 老赵
    admin
    链接

    老赵 2009-07-05 18:09:00

    @瞧瞧
    我明白你的意思,还是明天看我的文章吧,别纠缠于某个表达形式了。
    你是高手,可以正确推断出一个真命题,可是你无法保证这个命题别人就理解正确了。
    正确的表达形式也会被误解,我们还是要把问题讲清楚。
    这样无论什么说法,都可以推断出来,就算是正确的命题,也不是让人死记硬背的。

  77. SnowFly
    *.*.*.*
    链接

    SnowFly 2009-07-05 18:21:00

    老赵,您真强!能不能给我们这些后辈们传授些学习方法啊,谢谢您了!!

  78. 老赵
    admin
    链接

    老赵 2009-07-05 18:25:00

    @SnowFly
    这个容易,在我的blog里找出我都是因为哪些事情被骂的,然后照着被骂的东西来做就对了。
    例如,你会看到有人说“不喜欢看到这些,还是希望看到技术方面的东西。”那么说明这篇文章是在谈我的想法,然后想想为什么我会思考那些东西,一起思考思考。
    当然,我认为那些是我前进的方式,肯定有很多人不同意,所以你一定要自己有自己的判断。

  79. SnowFly
    *.*.*.*
    链接

    SnowFly 2009-07-05 18:34:00

    谢谢您的回复,我就很欣赏您做人做事的风格!您说话很严谨,现在正在看您的Mvc视频,我今后一定多向您学习,多看你的blog。如果有遇到什么问题,可以向您请教吗?

  80. 老赵
    admin
    链接

    老赵 2009-07-05 18:37:00

    @SnowFly
    其实我也不确定我做人做事风格是否正确——或“合适”。
    有问题的话,到下面这个链接或Email联系我吧。
    http://www.cnblogs.com/JeffreyZhao/archive/2006/10/29/ASP_NET_AJAX_Q_and_A.html

  81. Old
    *.*.*.*
    链接

    Old 2009-07-05 19:29:00

    老赵这里的评论比文章更有意思!
    :-)

  82. 冯岩
    *.*.*.*
    链接

    冯岩 2009-07-05 22:25:00

    老赵。我问一个和这篇文章不是很相关的问题,
    为什么现在的各大新闻门户,像 新浪,和网易新闻频道首页。都会将大量CSS直接定义在HTML里面。他们这样做的目的难道是为了用户一打开页面就看到是整齐美观的页面吗?不会影响用户打开速度吗?
    老赵你有时间解答下,这二天我在想这问题~谢谢!

  83. 老赵
    admin
    链接

    老赵 2009-07-05 22:28:00

    @冯岩
    我也不知道,其实淘宝也是这样,有机会我问问一些人。

  84. 老赵
    admin
    链接

    老赵 2009-07-05 22:29:00

    博客园终于可以盖楼了,嘿嘿……

    5楼

    4楼

    3楼

    2楼

    1楼






  85. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 22:35:00

    冯岩:
    老赵。我问一个和这篇文章不是很相关的问题,
    为什么现在的各大新闻门户,像 新浪,和网易新闻频道首页。都会将大量CSS直接定义在HTML里面。他们这样做的目的难道是为了用户一打开页面就看到是整齐美观的页面吗?不会影响用户打开速度吗?
    老赵你有时间解答下,这二天我在想这问题~谢谢!



    我个人的看法是这样的:
    以前窄带要求的是尽量分离 尽量重用 因为瓶颈在带宽

    由于现在带宽的瓶颈几乎可以忽略了
    瓶颈逐渐变为tcprequest的次数了
    如果在叶面中插入 css link 和js src
    浏览器会先读取主页面,然后逐个处理这些外联文件 最后才显示叶面
    就算是已经在缓存浏览器也会先逐个检查这些文件的 etag 同样多次request以后才显示叶面
    又因为浏览器w3c的标准是一个窗口只能开两个下载线程 这个速度会格外的慢。既然一个叶面需要的css并不多 还不如直接写到叶面里面


  86. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 22:39:00

    Jeffrey Zhao:
    博客园终于可以盖楼了,嘿嘿……

    5楼

    4楼

    3楼

    2楼

    1楼







    直接回复的时候看不到 只有刷新一次才能看到 -0-

  87. 老赵
    admin
    链接

    老赵 2009-07-05 22:41:00

    @韦恩卑鄙
    嗯嗯,考虑删除恶意盖楼,嘿嘿。

  88. 老赵
    admin
    链接

    老赵 2009-07-05 22:43:00

    韦恩卑鄙:
    我个人的看法是这样的:
    以前窄带要求的是尽量分离 尽量重用 因为瓶颈在带宽

    由于现在带宽的瓶颈几乎可以忽略了
    瓶颈逐渐变为tcprequest的次数了
    如果在叶面中插入 css link 和js src
    浏览器会先读取主页面,然后逐个处理这些外联文件 最后才显示叶面
    就算是已经在缓存浏览器也会先逐个检查这些文件的 etag 同样多次request以后才显示叶面
    又因为浏览器w3c的标准是一个窗口只能开两个下载线程 这个速度会格外的慢。既然一个叶面需要的css并不多 还不如直接写到叶面里面


    有一定道理。
    可能还会有修改的问题。例如你使用外部文件的话,一旦设了cache-control/max-age/expire header,那么浏览器就不会去请求这些文件了。
    也就是说,即使你修改了这些文件,某些客户端还是得不到更新。
    写在页面上就不会有这样的情况发生了。

  89. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 22:47:00

    摄制成cache-control/max-age/expire header
    应该还是会发一个request检查文件是否过期的etag吧 我恍惚记得

  90. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 22:51:00

    http://xu20cn.blog.51cto.com/274020/112715
    根据这篇文章
    cache-control/max-age/expire header
    也是要等服务器返回一个304的

  91. 老赵
    admin
    链接

    老赵 2009-07-05 22:54:00

    @韦恩卑鄙
    缓存有两种,一种是使用etag,一种是使用绝对超时时间。
    前者每次需要请求,期待一个304,后者不需要每次请求。两者可以结合。
    这个问题可以问Anders Liu,他翻译过一本书,里面讲的很清楚。yslow里也讲的很清楚。

  92. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-05 22:57:00

    呵呵~~ 我也不是很sure拉 毕竟摘自陌生人的blog
    也可能是我理解错了~~


  93. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-06 01:22:00

    又看了一些资料 果然如你所说



    也的确如你所说cache-control/max-age/expire header 会见测不到更新 会对首叶这种经常更新的叶面带来伤害吧. 叶面更新了 css没
    有更新的化 布局就乱了。

    而且 我记得 cache-control/max-age/expire header 这种缓存 按f5 应该会强制取消掉 是不是这样呢?

  94. 老赵
    admin
    链接

    老赵 2009-07-06 01:25:00

    @韦恩卑鄙
    我不清楚啊,ctrl+f5肯定是忽视缓存的。

  95. 陛下
    *.*.*.*
    链接

    陛下 2009-07-06 09:25:00

    从我现在的理解看,抛开性能等方面,静态化有时是为了满足一些低端服务器的需求,比如“虚拟空间”等(可能我表述不当)。而静态化的过程是另一个功能更强的系统提供的,其在静态化之后再同步到公网的某个虚拟空间,这样便可以节约站点成本。这种应用尤其在提供内容给各类小站长时显得更为重要,因为小站长是不会花大价钱租个服务器的。

  96. 老赵
    admin
    链接

    老赵 2009-07-06 09:41:00

    @陛下
    我觉得你说的的确有道理,我没有想到,谢谢补充。

  97. oBlank[未注册用户]
    *.*.*.*
    链接

    oBlank[未注册用户] 2009-07-06 10:45:00

    CSS写进页面的做法的确很古怪,而且有流行的趋势
    希望能有人给出答案

  98. AlexLiu
    *.*.*.*
    链接

    AlexLiu 2009-07-06 11:12:00

    没看懂,真的。我还是有待提高。

  99. 陛下
    *.*.*.*
    链接

    陛下 2009-07-06 12:14:00

    Jeffrey Zhao:
    @陛下
    我觉得你说的的确有道理,我没有想到,谢谢补充。


    Oh yeah,老赵回过我的回复。Oh yeah,干巴得郭达萨伊。

  100. 李华顺[未注册用户]
    *.*.*.*
    链接

    李华顺[未注册用户] 2009-07-07 10:58:00

    @xland

    冯岩:
    老赵。我问一个和这篇文章不是很相关的问题,
    为什么现在的各大新闻门户,像 新浪,和网易新闻频道首页。都会将大量CSS直接定义在HTML里面。他们这样做的目的难道是为了用户一打开页面就看到是整齐美观的页面吗?不会影响用户打开速度吗?
    老赵你有时间解答下,这二天我在想这问题~谢谢!


    我理解他们把CSS直接定义在html里面是为了减少.css文件http请求数,一提高页面加载速度。另外一半这种情况在首页比较常见,因为首页的样式基本上更其他页面没多大关系,so...

  101. 李华顺[未注册用户]
    *.*.*.*
    链接

    李华顺[未注册用户] 2009-07-07 11:02:00

    详见:《Minimize HTTP Requests》: http://developer.yahoo.com/performance/rules.html#num_http

  102. 李华顺[未注册用户]
    *.*.*.*
    链接

    李华顺[未注册用户] 2009-07-07 11:10:00

    韦恩卑鄙:
    又看了一些资料 果然如你所说
    也的确如你所说cache-control/max-age/expire header 会见测不到更新 会对首叶这种经常更新的叶面带来伤害吧. 叶面更新了 css没
    有更新的化 布局就乱了。
    而且 我记得 cache-control/max-age/expire header 这种缓存 按f5 应该会强制取消掉 是不是这样呢?



    更换文件名,如原来的:
    http://static.cnblogs.com/css/fuckgfw.css
    换成:
    http://static.cnblogs.com/css/fuckgfw.css?v=随意的字符(可以用文件更新日期)

    这样浏览器再次读取的时候就会把这个css文件当新的文件处理

    看 Yupoo 或 Flickr 的html源代码

  103. cct1[未注册用户]
    *.*.*.*
    链接

    cct1[未注册用户] 2009-07-07 13:59:00

    看完全文,说来说去都是猜测。不知发这文章意义是什么,让大家讨论你的猜测吗?你的初衷应该是想介绍吧

  104. 老赵
    admin
    链接

    老赵 2009-07-07 14:02:00

    @cct1
    通篇看下来没有猜测,哪里在猜测了?

  105. JimLiu
    *.*.*.*
    链接

    JimLiu 2009-07-07 21:14:00

    我也凑个热闹
    先说说“静态like的URL”,也就是所谓.html,我觉得这样谈SEO比较不靠谱,除非我们能准确地知道搜索引擎是会对“.html”有特殊优惠,但我没有见到过这样的官方言论。对于真正写入静态.html文件,对于以新闻系统为核心的网站这应该比较适用吧。对于SNS?静态就是灾难。
    再说说“看着友好的URL”,也就是所谓www.test.com/Articles/123这样的。对于SEO来说,我也觉得不靠谱,因为我的确没有看到官方言论称搜索引擎会对没有QueryString的[URL]特殊照顾,注意是URL。
    总结上面两点,我认为通过“美化”URL来搞SEO的,基本不靠谱。
    补充一下:对于把.html用URLRewrite成动态网页的,我虽然不知道这样做的初衷是不是所谓SEO,但是我大胆猜想这样做会适得其反,因为对于尝试而言.html是“静态网页”的代表性后缀。但是却“意外”地获得了动态的内容。我觉得这样很有可能会被搜索引擎判断为作弊。
    而对于评论中有的朋友所说的让机器人和用户看到不同的页面,这明显是作弊,肯定会被搜索引擎给咪西掉。
    ———————————无敌分割线————————————
    所以我觉得,要说SEO,还是从两个方面做起:
    HTML Refactory,做良好的HTML,语义化的HTML,尽可能少冗余的HTML。一方面减少HTML字节降低了网络传输上的压力,一方面我认为这个真正是对机器人的“友好”。
    推广和内聚,说到底搜索引擎的抓取机制还是超链接,做好推广(当然不是作弊性的撒链接),做好站内页面之间的聚合(tag之类),这样做随着时间的推移肯定能增加PR。

  106. 老赵
    admin
    链接

    老赵 2009-07-07 21:43:00

    @JimLiu
    我同意你的看法。:)

  107. 韦恩卑鄙
    *.*.*.*
    链接

    韦恩卑鄙 2009-07-07 23:04:00

    老赵的回复成了情报交换地了 不错不错

  108. #hq5460[未注册用户]
    *.*.*.*
    链接

    #hq5460[未注册用户] 2009-07-09 18:23:00

    @冯岩
    是为了减少IE在同一时刻下载文件的个数,详情见MSDN

  109. Jack Niu
    *.*.*.*
    链接

    Jack Niu 2009-07-29 10:47:00

    大家都在谈这个东西,学习了!

  110. 链接

    想兵 2010-12-27 16:00:56

    老赵对SEO的理解还处于比较初级的阶段啊,从网站布局上就可以看得出来了。实事上,纯静态和url重写在SEO上是有着很大的区别的,这个不管是问任何一个资深的SEO人员都是一样的答案的。当然前提是内容也一样,不能拿最差的和最好的比。

  111. 老赵
    admin
    链接

    老赵 2010-12-27 18:48:10

    @想兵

    我这文章真是白写了,唉。其实有些方面从技术人员角度来说是一目了然的,但是看来对于不明白技术的人实在是说不清楚……

  112. itsuki
    60.210.198.*
    链接

    itsuki 2011-04-27 11:08:11

    这么晚了才看到这篇文章,不过我觉得静态化降低负载确实有效的,尤其像ASP这种一挂全挂的.一台纯html的服务器跑几十万IP没问题,asp的10万也跑不了吧

  113. 老赵
    admin
    链接

    老赵 2011-04-27 17:02:54

    @itsuki

    asp不知道,asp.net每秒成百上千PV是没问题的。

  114. itsuki
    119.177.79.*
    链接

    itsuki 2011-05-02 22:31:37

    @老赵

    你好老赵,我的降低负载是指可以提供一定的"安全负载",在一定的情况下用空间换时间,可以避免数据库或应用程序服务器问题带来的完全无法访问,尤其是数据库服,应用程序和"静态化"分别部署时,数据服务挂掉时至多不能看到最新数据和使用动态服务,这对用户和搜索引擎来说都是友好的,搜索引擎虽然不关心页面是怎样存放的,但它还是很关心页面是不是打的开:P

  115. 老赵
    admin
    链接

    老赵 2011-05-03 14:56:42

    @itsuki

    数据库挂掉么还有缓存了,为什么应用就挂掉了?静态说到底也只是整页缓存而已,能静态化的页面,缓存早就不在话下了,没什么特别的地方。把静态化太当回事情了,其实是概念不清,就像我文章里说的那样。

  116. itsuki
    60.210.222.*
    链接

    itsuki 2011-05-03 23:10:11

    @老赵

    都挂了哪还有缓存哇...我见过的都是应用层提示XXX不能链接了...服务端写数据时怎么办哇?

    我见过的例子就是verycd.com,以前经常mysql无响应,现在连评论都是屏幕滚动页面最下才会显示...

    我敢保证网易新浪新闻都是静态的,当然twitter就不是了...应用不同嘛...

  117. 老赵
    admin
    链接

    老赵 2011-05-04 17:25:33

    @itsuki

    您能假设数据库挂了,我也来假设静态页面服务器挂了吧。新闻类网站静态很正常,我又没说不能用静态,只是说要分清楚各种概念。再说了,您敢保证网易新浪新闻都是静态的,我还敢保证他们网站挂了的话,静态页面照样访问不了,信不信?

  118. wllllll
    219.235.234.*
    链接

    wllllll 2011-06-24 11:15:40

    那么多专业人事却没几个说到点子上…………

    每次访问一个静态文件都会发送上次访问返回的ETag,如果没有则不发送,如果ETag与服务器文件计算的ETag相同,那么直接返回302消息,并且不返回HTML数据。如果不相同,那么返回200消息,与新的ETag,并且返回HTML数据。

    默认的动态文件,每个都是不发送ETag的,每次都会返回200消息与HTML数据。URL重写根本就没任何意义。

    搜索引擎根本不在意你是什么HTML还是OO BB XX的扩展名,搜索引擎只会根据你的ETag来判断你的URL是否是静态文件。

    如果使用了Apache的反向代理,也会有ETag,但是ETag根本不起到静态文件的效果。Apache的反向代理中的ETag,仅仅是为了提供访问HTML时增加多个的TCP管道加载数据而已。但是没几个浏览器会在浏览HTML时会使用这个功能的。

    并且使用Apache的反向代理后每次访问都更新ETag,这会让搜索引擎无法分辨这到底是个什么网站。于是搜索引擎会很生气的延长刷新页面的时间,Apache的反向代理的后果比URL重写还严重。

    与SQL的时间戳配合,如果一个页所有SQL查询都返回时间戳,再根据这些SQL数据计算出一个ETag,就可以让aspx文件模拟出一个静态文件的HTTP通讯。

    第一次访问a.html:

    GET /WPA/a.html HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 (.NET CLR 3.5.30729)
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-cn,zh;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    

    第一次访问时返回的数据:

    HTTP/1.1 200 OK
    Server: Microsoft-IIS/5.1
    Date: Fri, 24 Jun 2011 03:01:56 GMT
    Content-Type: text/html
    Accept-Ranges: bytes
    Last-Modified: Fri, 24 Jun 2011 03:01:46 GMT
    ETag: "0c990d1b32cc1:bb6"
    Content-Length: 8
    

    第二次访问a.html

    GET /WPA/a.html HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 (.NET CLR 3.5.30729)
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-cn,zh;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    If-Modified-Since: Fri, 24 Jun 2011 03:01:46 GMT
    If-None-Match: "0c990d1b32cc1:bb6"
    Cache-Control: max-age=0
    

    第二次访问返回的数据

    HTTP/1.1 304 Not Modified
    Server: Microsoft-IIS/5.1
    Date: Fri, 24 Jun 2011 03:01:56 GMT
    ETag: "0c990d1b32cc1:bb6"
    Content-Length: 0
    
  119. 老赵
    admin
    链接

    老赵 2011-06-24 11:49:22

    @wllllll

    服务器端有“静态文件”,但其实没有“静态请求”这种东西,搜索引擎也不知道什么是“静态内容”。ETag什么也跟静态与否无关。

  120. wllllll
    219.235.234.*
    链接

    wllllll 2011-06-24 13:00:34

    @老赵

    高手你就这样反驳我…………

    就象硬盘可以模拟,对于软件就不存在什么硬盘了么?还不是一样可以从硬盘驱动来判断哪些是虚拟的?

    在默认情况下,服务器在处理静态文件和动态文件时返回的HTTP Headers是不同的,因此可以根据HTTP Headers来判断是否是静态文件,动态文件就可以模拟静态文件的协议。不能因为HTTP Headers头任何情况都可以修改和模拟,所以搜索引擎就不知道什么是静态了。

  121. 老赵
    admin
    链接

    老赵 2011-06-24 13:35:09

    @wllllll

    没反驳你,只是我觉得有些说法不太恰当。

    静态文件又没有标准的HTTP头信息,我只知道每个请求反正就是服务器要处理一下,吐出点结果,搜索引擎没法知道吐出的是磁盘上的文件还是动态生成的内容……

  122. 阿斯顿发
    58.211.56.*
    链接

    阿斯顿发 2015-03-31 08:38:27

    无病呻吟,没事找事,sb。

  123. saa
    111.161.17.*
    链接

    saa 2015-07-29 06:54:38

    完全是胡扯,静态页面的http头是不一样的,而且静态页涉及到内容过期静态页压缩,静态化的页面名及应该是拼音,你写的id伪静态没任何意义。

  124. 老赵
    admin
    链接

    老赵 2015-08-26 13:31:52

    @saa

    多学点技术再来吧……

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我