各位好,对于大型门户网站,整站静态页的方式,目前总结下来,有几下几种办法,但各种方法都有期不完美的地方,所以深感疑惑,对于新浪、网易这种大型的门户网站,他们的静态页生成机制究竟是用的哪一种呢?如果以下几种都不是的情况下,那他们采用的是哪一种机制呢??1.整站模板+样式,然后通过WEB IIS去读取数据库,通过这些模板和样式动态生成HTML文件并保存于服务器。
弊端:
如果在新闻量很大的情况下,模板有更改,那么岂不是要重新发布一次所有的页面?这样岂不是大量浪费时间和服务器资源?
而且,如果是BBS或者评论这种更新速度比较快的东西,那么这些页面怎么办?2.各新闻保存时自动生成。
弊端:
在保存文件时生成文件,解决了一次发布大量信息时的服务器资源浪费问题。且如果内容有更改,页面会及时得以更新,但如果在内容没有更改,只是模板文件有更改的情况下怎么办呢?
而且,以上两种方法都有一个问题,就是局部动态的问题。如果模板中局部信息是动态的,更新速度比较快的,比如BBS的最新帖子。那么这部分这么解决,现在我们采用的方法是用JS动态加载,但用JS动态加载的话对搜索引擎的支持就会非常差了。如果不用JS动态加载,那么只能采用IFRAME的方式来解决?3.在WEB.CONFIG中配置节点,自定义类去接收所有的HTTP访问请求,每请求一个HTML时,如此HTML不存在,则去判断是HTML是否能映射到某个动态文件(根据某个映射配置文件查找),如果能映射到某个动态文件,那么,立即生成此HTML文件,并呈现给用户。
弊端:
此种方法,如果模板或内容有更新怎么办?目前我们采取的方法是:每请求一个HTML,如果此HTML存在,则根据配置文件判断内容是否已过期(一般为5分钟),如果已过期,则重新生成此HTML并呈现给用户。这样一来,很好的解决了更新的问题,只不过在更新后会有5分钟的间隔时间。
但又有一个问题出现了,如果自定义类去接收所有的HTTP访问请求,那么每个用户的各种请求都会接收到(包括CSS文件),虽然可以根据扩展名来判断,非HTML不去做其余的逻辑操作,但:这样是否会造成服务器资源的浪费?是否会极大的损耗服务器的性能?综上所述,目前完全没有一种完美的办法来解决HTML的问题,请问各位同仁,像新浪、网易这种站点是如何解决此问题的?谢谢!

解决方案 »

  1.   


    新浪、网易这种站点是如何解决此问题的
    人家有专门的C或C++开发的静态程序,专门生成静态页,而管理这些静态页也是通过这些程序来管理的,类似数据库管理我不是MVP,但我知道....
      

  2.   

    有个东西叫SQUID,有兴趣的可以找找相关资料来看看
      

  3.   

    没想那么多。不过写了几篇介绍静态页面的文章,请大家批评:
    http://www.svnhost.cn/Article/?k=%E9%9D%99%E6%80%81
      

  4.   

    等mvp..目前我们生成静态是脱离IIS的 就是把html等摸版代码放在winfrom里 只读数据库动态的内容去替换 生成时稍微好点吧 
      

  5.   

    大家一起参观MVP,等待MVP大开会~~~~
      

  6.   

    用.net重写+缓存吧,
    或用asp.net mvc框架
      

  7.   

    这个网站我用的是asp生成静态,并且有中文件名,对搜索引擎很友好:
    http://www.fshjob.com/zhaopin/fmx122696/服务站站长.html
      

  8.   

    问题太大了哦,你可以看一下CMS方面的信息!
      

  9.   

    等 mvp 我也在考虑这个问题,如果文章有个100万,怎么更新模版或者中间的文章类别。
      

  10.   

    楼主这问题,说实话提的不好。MVP级的高手请进,呵呵,众多高手是不在乎称号的。楼上的许多人都是大牛,他们很多的一句话就是,坐等MVP,为什么?
    坐等MVP
      

  11.   

    晕,差一月就整整一年的帖子了,怎么还没结帖呢?CSDN不是会自动结帖吗?
      

  12.   

    楼主真是杞人忧天。人家门户网站的网页模板怎么会经常修改呢?有些几年都不换。CSDN 也是一年折腾一次。而且旧的还是保持原样。根本没有生成的问题。新闻、论坛更新更有必要生成html 了,生成一次成千上万的用户都可以共同使用,好过反反复复读取数据库。
      

  13.   

    山谷回音:mvp,你在哪里,你在哪里,你在哪里~~~~~
      

  14.   

    这个问题不需要MVP高手 ASP.NET就可以了
    大部分网站静态化就楼主说的这几种 不过无非是人工静态 和程序自动静态
    本人做静态网站时遇到动态的部分是静态页里加入动态部分,不过因为这样的很少 所以不会影响多少性能
    静态化了 并不是说非要全HTML 动态语言也是可以用的
      

  15.   

    MVP来了,我是来开路的!!后面就是了
      

  16.   

    我不是MVP 我就是自己亲自做过。。   所以说下我做的方法
      

  17.   

    我就是MVP,我来了,让大家久等了,实在太忙了
    好了,见都见了,大家散伙吧 
      

  18.   

    挖下坟吧。大的都用 shtml了。SHTML 可以使用引用文件。如同 asp 里面的 include