我一直搞不明白,以前开发都是些MIS系统,直接用Asp.net动态页面的,可现在要做个网站,老板要求把动态的aspx页面都(注意:是指所有)改成静态的HTML,我看一些网站,比如:sina.com.cn,163.com等网站大部份都是HTML页面,好处我也大概了解,现在我的疑问是:1、分页处理:生成的HTML采用什么方式进行分页呢(单个页面的生成我清楚)、比如一篇文章,如果有用户回复了,这种回复的内容如果采用静态的HTML该怎么处理呢?2、页面风格改变:一些复杂的页面,比如一个页面包括头部,中部(左,中、右三栏),底部,如果采用生成静态的HTML,那么如果那天我想升级我的网站,把中部(左,中、右三栏)改成左,右两栏,可数据都写在静态的HTML页面里了,我怎么修改呀?大家一般采用什么方式处理呢?3、数据存放:生成静态HTML页面的内容还有必要存上数据库里吗?比如新闻的内容。如果内容也保存在数据库里,那大家一般对查询是采用那种方式呢?搜索引擎,还是直接采用SQL查询数据表呢?
希望有经验的朋友帮忙一下,让小弟解解惑呀!
非常感谢!!!本贴拒绝灌水

解决方案 »

  1.   

    分页
    生成不同的页,名字加序号xxx_1.html xxx_2.html重新生成可以把数据放在XML里面
    用一个样式来解析为HTML
      

  2.   

    //存数据库是必须的
    我说的是数据,至于生成的HTML,就没有必要了
      

  3.   

    要html模板滴,做个模板,把标题、内容、时间等一些用特殊符号做标记,如{title},然后把数据库里的新闻替换掉标记,然后生成静态
      

  4.   

    TO: viena(维也纳nn)  请你不要再......
    TO:xiaoqhuang(我想当老鸟)  请你看清楚我的问题请说,谢谢!就没有高手肯帮忙吗,这些朋友说的根本不是我想解决的问题关键呀!
      

  5.   

    http://community.csdn.net/Expert/topic/5084/5084943.xml?temp=.3123743
      

  6.   

    1、多页问题:第一页可以使用xxx_1.html,第二页可以使用xxx_2.html,以此类推!用户评论问题我建议在内容页面使用JS以XXX.Aspx?id=xxx形式进行调用,这样可以实现同步更新!2、页面风格改变,如果是总体布局都发生更改只好全部生成了, 如果是布局不变化只是样式改变可以用XHTML来进行布局,不知道其他大大有没有什么好的方法。我也比较头痛这个问题!3、数据存放:这个还是要存放在数据库的, 数据库是所有数据的依据,如果没有数据库作为数据源某天你需要重新生成或者删除某文章,或者其他一些操作时该怎么办?
    在数据查询方面只能使用动态页面了。
      

  7.   

    感谢:cantops(劣等游民) 的回答,但我又感到不解了:问题:“多页问题:第一页可以使用xxx_1.html,第二页可以使用xxx_2.html”
    如果这样的话,大个比方,现在某篇文章回复数已有1000条,那第1001个用户的回复只给先删除原来生成的页面,再重新生成一遍了?如果分页显示10条记录,那也就是说第1001个用户的回复,我要生成101个页面、实现应该是没问题的、这样的速度可行吗?
    “用户评论问题我建议在内容页面使用JS以XXX.Aspx?id=xxx形式进行调用,这样可以实现同步更新!” 这种方式我能理解。
      

  8.   

    举个例子,比如新闻栏目里要求每一个新闻页都能显示最新的10条新闻,如果我现在有100条新闻,生成了100个HTML页,那么每当我添加一条新闻时,是不是要把前面100页也都重新再生成一遍??
      

  9.   

    重新在生成过这是没办法的事,象评论回复根本就不适合做成静态页,你看看网易,新浪等等的评论页只有第一页是静态的,其余的都是用动态的页面风格改变
    ===========
    这就是要用模板的,所以数据库是肯定要的,模板一改变,所有页面就重新生成。生成静态页又没有整天在生成,SQL查询 就好
      

  10.   

    感谢:sekone 还有没有列详细说明的朋友呀,还是一知半解呀!
      

  11.   

    CSDN里真的都没人愿意出手相助一下吗?
      

  12.   

    1、多页问题:上面的讲了很多,就不说了2、页面风格改变问题:一般情况下,大的行业门户或门户站会将生成HTML的页首与页尾或其他需要变动频繁的版块用JS或框架调用,因为这2个地方可能改动性比较大,还有就是一个大的行业门户或门户站不会经常出现版面更改的问题,尤其是内页,就算更改,说实在的,这样的站这些新闻只是做信息量的收集,并不一定太关注页面的表现形式3、数据存放:就算数据备份你也要存放吧,生成完了就丢了那你还以后服务器出问题了怎么办,再者一般数据统计有的做法会与文章相关,看看现在一些商业CMS的做法,如动易,风讯等
      

  13.   

    这样子的网站肯定要依赖数据库进行存储的。1,分页处理:
    生成的HTML采用什么方式进行分页?根据数据库中的存储的页面索引,生成XML文件,用JS来读,可以在这儿用上AJAX技术。这里面可以考虑根据搜索出的结果进行分页的问题。2,页面风格改变:
    重新从数据库中提取出数据,进行页面重写。3,数据存放:
    肯定要存放在数据库中,不然怎么做搜索?
      

  14.   

    2、页面风格改变:一些复杂的页面,比如一个页面包括头部,中部(左,中、右三栏),底部,如果采用生成静态的HTML,那么如果那天我想升级我的网站,把中部(左,中、右三栏)改成左,右两栏,可数据都写在静态的HTML页面里了,我怎么修改呀?大家一般采用什么方式处理呢?
    ==========
    对于你的这条可以用include文件包含的.采用shtml.你去看新浪的新闻一般都是为shtml.页面的布局可以单独的分离出来.生成的时候只要将这句写进去就可以了.你到时候修改改布局的时候可以不必理会静态页面里面已生成的东西.你去网上搜一下shtml语句.里面可以采用<!--#include file="dd.html"-->的.也就是说可以像ASP一样包含其它的页面
      

  15.   

    生成的时候只需将<!--#include file="advertisement.html"-->这句写入静态页面里面.到时候你修改的时候可以直接修改advertisement.html这个页面进行更新网页的广告和中间那块的布局嘛.
      

  16.   

    //比如一篇文章,如果有用户回复了,这种回复的内容如果采用静态的HTML该怎么处理呢?用js好多论坛都是这样
      

  17.   

    静态页面使用ajax进行数据交互,这样做分页就很简单了,写个脚本就搞定
      

  18.   

    如果全部要用静态页面的话可以HTML+JAVASCRIPT+AJAX,用户提交的数据处理后直接生成表态页面文件,但是可能要重新生成其它相关页面。你所描述的要求和你老板的要求觉得有差别,我想老板的意思不是这个样子吧?如果它真的要所有的页面全部都是HTML,难道你们的网站用户只是浏览不用提交数据吗?如果是这样的话当然是很容易实现全部的HTML了。如果是有用户上传数据则肯定是全部要保存到到数据库中了,但你要先一个静态页面生成的程序,当有数据变动时重新生成所有的相关页面。不是问一下头为什么要这样实现,是为了解决什么问题,可能有更好,更容易维护的其它方式。
      

  19.   

    1、分页处理:生成的HTML采用什么方式进行分页呢(单个页面的生成我清楚)、比如一篇文章,如果有用户回复了,这种回复的内容如果采用静态的HTML该怎么处理呢?2、页面风格改变:一些复杂的页面,比如一个页面包括头部,中部(左,中、右三栏),底部,如果采用生成静态的HTML,那么如果那天我想升级我的网站,把中部(左,中、右三栏)改成左,右两栏,可数据都写在静态的HTML页面里了,我怎么修改呀?大家一般采用什么方式处理呢?3、数据存放:生成静态HTML页面的内容还有必要存上数据库里吗?比如新闻的内容。如果内容也保存在数据库里,那大家一般对查询是采用那种方式呢?搜索引擎,还是直接采用SQL查询数据表呢?
    生成静态页面,和url重写的处理流程差不多
    但是在客户端调用url请求时并不转到相应的真实url
    而是如果不存在相应的html文件,则利用对应的apsx生成真实的html页面,然后直接去访问html
    1.这样就不存在分页的问题,如果你aspx本身利用url questring分页了,相应的html自然也分页了
    2.页面风格改变,同样的,你可以定义几种风格,在生成静态页面的时候分别放在不同的目录下
    theme1\pag1.html和theme2\page1是不同风格的同一页面,这样又是用空间来交换的
    或者你不想这样的话,可以定义风格变化之后删除所有自动生成的html这样也会自动重新用新的风格生成html
    3.数据存放是一定要的,因为这才是根本,所有的aspx.html只是用于表现它的,皮之不存,毛将焉附
      

  20.   

    你要先明白你老板的意思,把动态aspx改成静态html页面的目的是什么。是出于性能考虑?又或者是出于方便google百度等搜索引擎找到你们的文章?
    在静态页面里,需要动态的位置(例如页头页尾广告等)可以用iframe代替。
    至于分页,你可以适当为你的文章归类,避免同一分类下的文章数量太多。
    如果实在无法避免(例如某一分类下有上万篇文章),每增添删除文章都要重新生成分页页面,这样很不现实。
    通常的做法是表态+动态:只把第一页做成静态,其余的仍然是aspx动态页面。因为第一页访问量是最大的。数据不存进数据库也可以,这个要按你老板的需求。搜索的话,可以另外做一个搜索引擎(网上有开源的)
      

  21.   

    数据用XML存放,再用XSL显示或用JavaScript直接读取XML数据进行分页和显示
      

  22.   

    同意zzzsea的做法
    但用javascript处理的话,有一个非常不好的地方是,页面上动态的内容不能被百度google等搜索引擎收录进去(搜索引擎不会去解析javascript的)。
      

  23.   

    内容变动过于频繁的页面本来就不适合做静态生成,相对稳定的内容做静态生成才有意义。跟你老板说要因地制宜,不要为了静态而静态。做了静态生成,一些方便的动态功能也没办法实现了,比如说动态排序等等...要是遇上那种又要静态,又要功能强大的,就用urlmapping吧。
      

  24.   

    可以用URL Rewrite,搜索都是“静态”的……
      

  25.   

    小弟有个浅见~~如果说的不对请高手更正
    1,建立一个静态页面的模版,一些需要经常更改的广告等东西,用js来写(在更改的时候只要更新1个js文件就可以了);
    对于分页的问题,上面的高手说过了,写成xxxx_1.html等,每个页面的不同内容(需要分页显示的内容)用特殊符号标记(就是在模版中用$myData1$  $myData2$等表示
    2,在后台的cs文件中读取模版的内容,然后从数据库读出该静态页面需要的数据;用读取的数据replace那写特殊符号,然后生成一个html文件FileInfo fi1=new FileInfo(fullPath);
    //判断静态网页文件是否存在
    if (fi1.Exists)
    {
    Response.Write("window.open('picHtml\\"+fileName+"')");
    }
    else
    {
    System.Text.StringBuilder strHtml=new System.Text.StringBuilder();
    try
    {
    string r1;
    using(StreamReader sr=new StreamReader(Server.MapPath(".\\picHtml\\template.html")))
    {
    while((r1=sr.ReadLine())!=null)
    {
    strHtml.Append(r1+"<br>");
    }
    sr.Close();
    }
    }
    catch (Exception ex)
    {
    Response.Write(ex.Message);
    }
    //生成html页
    try
    {
    strHtml.Replace("$htmlkey[0]$",path);
    //用打开或写入的形式创建文件流
    using(FileStream fs=fi1.OpenWrite())
    {
    StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));
    sw.WriteLine(strHtml);
    sw.Flush();
    sw.Close();
    }
    Response.Write("window.open('picHtml\\"+fileName+"')");
    }
    catch (Exception er)
    {
    Response.Write(er.Message);
    }
      

  26.   

    呵呵,还有一个问题就是怎样防止不让别人用工具一口气将整站HTML下载到本地
      

  27.   

    看了楼上的很多人说用URL重写。。这要怎么个实现法?或原理是什么样的。期待ing.......
      

  28.   

    URL重写很简单,只要下载一个URLRewriter.dll,然后在Web.config中配置如下代码   <RewriterConfig>
    <Rules>
    <!-- 重写URL -->
    <RewriterRule>
    <LookFor>/jadesun.htm</LookFor>
    <SendTo>/Demo/FreeTextBox.aspx</SendTo>
    </RewriterRule>
    <RewriterRule>
    <LookFor>/(([0-9A-Za-z\.])+)/default.aspx</LookFor>
    <SendTo>/iBlog.aspx?user=$1</SendTo>
    </RewriterRule>
    <RewriterRule>
    <LookFor>/Article/(\d+)\.aspx</LookFor>
    <SendTo>/Article/ArticleContent.aspx?ArticleID=$1</SendTo>
    </RewriterRule>
    </Rules>
    </RewriterConfig>这样访问/jadesun.htm就指向了/Demo/FreeTextBox.aspx.......
      

  29.   

    第一个分页问题不说了,我觉得最麻烦的只是文章很多的时候更新列表的问题。对你说的评论一般都是通过JavaScript导入另外的动态页面来实现,这样原静态页面不用更新。第二个改风格问题,我认为用DIV+CSS布局的静态页面很方便就能实现。更换模板只用把CSS更换就行了。这个方法对CSS要求很高…… 我还在入门阶段,只能勉强改一下。第三个存数据库是必要的,这个是源数据一定要有备份。没有什么网站是完美的,一但你要更改一些布局显示什么的没有数据你怎么重建?查询的也应该是用SQL吧?数据库里面的数据毕竟更原史更纯粹些。
      

  30.   

    ''''''最简单的长文章自动分页
    ''''''Power by Love_Computer
    ''''''http://www.56390.com
    ''''''[email protected]
    ''''''2005-9-22
    TestStr = "111111111,2222222222222,333333333333,444,555555555,6666666666,777777777,888888,99999999,00000000000000"
    '上面这句替换成新闻内容即可
    PageLen = 20'每页显示长度
    SplitStr = ","'分隔关键字符串
    If Len(TestStr) <= PageLen Then
    Response.Write TestStr & "<br/>"
    Else
    str = Split(TestStr,SplitStr)
    strShow = ""
    Page = Trim(Request.QueryString("page"))
    If Page = "" Then page = 1
    x = Trim(Request.QueryString("x"))
    If x = "" Then
    x = 0
    Else
    x = x + 1
    End If
    For i = x To ubound(str)-1
    strShow = strShow & str(i) & SplitStr
    If Len(strShow) > PageLen Then
    x = i
    Exit For
    End If
    Next
    ''''''Power by Love_Computer
    ''''''[email protected]
    ''''''2005-9-22
    Response.Write strShow & "<br/>"
    If Page > 1 Then
    Response.Write " <a href='javascript:history.back();'>[上页]</a> "
    Else
    Response.Write " [上页] "
    End If
    If x < ubound(str)-1 Then
    Response.Write " <a href='?x=" & x & "&page=" & Page + 1 & "'>[下页]</a> "
    Else
    Response.Write " [下页] "
    End If
    End If
      

  31.   

    你看看.www.hzxsp.com是否是上面的这种解决方式.
      

  32.   

    我觉得分页那里还是搞不明白,比如,新闻系统共有100条新闻,分页时可以生成list_1.htm,list_2.htm...等等的静态页面,单如果又添加了一编文章呢,变成了101条新闻了,那么,假如原来生成的是降次排列,那么是否所有的分页都要重新生成?
      

  33.   

    这个分页问题我也问过,呵呵!最后也是不了了之,好像除了URL重写就只有改动一点就重新生成全部列表页了!
      

  34.   

    对那些动态部分,可以在静态HTML页面中用iFrame+cgi解决;
      

  35.   

    用url重写可以对一个url重写,新闻页面都是好多url的,什么实现?
      

  36.   

    我觉得分页那里还是搞不明白,比如,新闻系统共有100条新闻,分页时可以生成list_1.htm,list_2.htm...等等的静态页面,单如果又添加了一编文章呢,变成了101条新闻了,那么,假如原来生成的是降次排列,那么是否所有的分页都要重新生成?
    ======================================================================问题就在于你为什么要用1,2,3,4,5这样的编号?你看新浪就是日期+时间+板块代码+其他乱七八糟的东西,这样就不会出现你说的情况了.
      

  37.   

    另外,需要提醒的是:list_1.htm,list_2.htm这样的页面,并不一定就是静态页.尤其做为一个列表页的时候.
      

  38.   

    问题就在于你为什么要用1,2,3,4,5这样的编号?你看新浪就是日期+时间+板块代码+其他乱七八糟的东西,这样就不会出现你说的情况了.---------------就算不用1,2,3,用随机码命名,在降序的情况下,生成静态列表还是个问题.
    如果保证第一页一直排满一个PageSize?后边的页依次更新?
      

  39.   

    其实是这样的,HTTP Dispath模式,你google一下吧
    所谓页面不一定要对应服务器上一个真实的.html文件
    在这种模式下,所谓一个页面只不过是数据库里一行记录,等你以后做多了就会明白了.
      

  40.   


    建议楼主参考一下目前的CMS系统的实现方法。
      

  41.   

    学习,我也想学生成静态页,但现在所有网站上介绍的都是同一个小例子,郁闷得很
    想看CMS源程序又没得,汗一下
    关注关注.....................
      

  42.   

    我有一个方法可以生成静态翻页,而且以前生成的翻页可以不用去生成,直接生成最近的两页和翻页序号文件!
    点我BLOG进去看吧
      

  43.   

    分页采用ajax技术啊,静态页面都是后台发布出来的。一般只有象新闻这样的才使用静态页面
      

  44.   

    用模板 
     http://vitality2007.cnblogs.com/
      

  45.   

    不懂为什么要生成静态页面,这样不可避免你说的这些问题,如果要很好解决这些问题,除非你自己弄一套类似asp或jsp的东西。然后自己决定什么时候生成静态页面,这不是自找苦吃嘛。
      

  46.   

    用url重写吧,伪静态页面或者xmlhttp直接请求 sss.asp?page=1 获得内容,然后直接fso来生成,不需要替换标记和模版
      

  47.   

    1.长文章分页  用上面大侠们说的就可以 评论回复我看用iframe调asp.net页吧
    2.使用模板
    3.应该存放到数据库 便于修改 怎么查都可以建议用正则查
      

  48.   

    感谢大家的回复,大家有没有一些实际的例子可以给点参考一下呢?或者给点URL都好!谢谢!!!
      

  49.   

    url地址重写就可以了 你可以看看www.aeeboo.com 我们全是用URL地址重写做的 只要在webconfig里配置一下就可以了
      

  50.   

    大家说的用AJAX,JS调用都不是最好的办法
    动易CMS是这样解决的,打个比方有100条记录,每页20个记录,第一页用index.html,第二页用List4.html,第三页用list3.html,最后一页List1.html,每次生成只要生成最后两页就行了,但个办法的不好就是为了首页是20个记录,如果总记录/页数不是整数的话,首页和第一页会有重复的记录
    www.6rooms.com这是一个视频网,会员每分钟都在上传视频,他也是采用HTML分页,处理得很好,不可能是重新生成所有分页,我现在还在研究他是怎么做到的
      

  51.   

    ---------
    zuo ge XML, li bian you ge jie dian shi xin wen de 
    ........................// fang news
    <news>..</news>    
    ............//fang pin lun
    <view>
    <v>sdflkjsldfkjsldkf</v>
    <v>sdfsdfs</v>
    .......
    </view>
    xiu gaii news  zhi xue yao xiugai <news> zhge ji dian jiu OK
    tian jia pin lun zhi xuyao creat  ge jie dian <v>  jiu OK
      

  52.   

    搜索一下urlrewrite,你的问题都得到解决.