我一直搞不明白,以前开发都是些MIS系统,直接用Asp.net动态页面的,可现在要做个网站,老板要求把动态的aspx页面都(注意:是指所有)改成静态的HTML,我看一些网站,比如:sina.com.cn,163.com等网站大部份都是HTML页面,好处我也大概了解,现在我的疑问是:1、分页处理:生成的HTML采用什么方式进行分页呢(单个页面的生成我清楚)、比如一篇文章,如果有用户回复了,这种回复的内容如果采用静态的HTML该怎么处理呢?2、页面风格改变:一些复杂的页面,比如一个页面包括头部,中部(左,中、右三栏),底部,如果采用生成静态的HTML,那么如果那天我想升级我的网站,把中部(左,中、右三栏)改成左,右两栏,可数据都写在静态的HTML页面里了,我怎么修改呀?大家一般采用什么方式处理呢?3、数据存放:生成静态HTML页面的内容还有必要存上数据库里吗?比如新闻的内容。如果内容也保存在数据库里,那大家一般对查询是采用那种方式呢?搜索引擎,还是直接采用SQL查询数据表呢?
希望有经验的朋友帮忙一下,让小弟解解惑呀!
非常感谢!!!本贴拒绝灌水
希望有经验的朋友帮忙一下,让小弟解解惑呀!
非常感谢!!!本贴拒绝灌水
解决方案 »
- 有人在用webpart吗?
- xml字符转换成execl文件
- ORM(NHibernate)使用二
- 自己定义一个Actionlessform类,在aspx中不再使用系统提供的form 标记.使用时发生了错误。
- 对datalist里的label进行判断
- SQL语句,两个表的updata语句 问题 急!!!!
- 大家来看看这是什么问题啊!
- 关于用存储过程来分页,并且不要需要主键的,除了用游标的方法以外,请问有什么好的方案?
- datagrid中的定位问题,关系到两个网页的传值,有接触过的进来解决一下
- (fzymr) 项目安装的问题!
- <>是什么符号??
- IList<ItemInfo>..中 <>这个表示什么意思啊?
生成不同的页,名字加序号xxx_1.html xxx_2.html重新生成可以把数据放在XML里面
用一个样式来解析为HTML
我说的是数据,至于生成的HTML,就没有必要了
TO:xiaoqhuang(我想当老鸟) 请你看清楚我的问题请说,谢谢!就没有高手肯帮忙吗,这些朋友说的根本不是我想解决的问题关键呀!
在数据查询方面只能使用动态页面了。
如果这样的话,大个比方,现在某篇文章回复数已有1000条,那第1001个用户的回复只给先删除原来生成的页面,再重新生成一遍了?如果分页显示10条记录,那也就是说第1001个用户的回复,我要生成101个页面、实现应该是没问题的、这样的速度可行吗?
“用户评论问题我建议在内容页面使用JS以XXX.Aspx?id=xxx形式进行调用,这样可以实现同步更新!” 这种方式我能理解。
===========
这就是要用模板的,所以数据库是肯定要的,模板一改变,所有页面就重新生成。生成静态页又没有整天在生成,SQL查询 就好
生成的HTML采用什么方式进行分页?根据数据库中的存储的页面索引,生成XML文件,用JS来读,可以在这儿用上AJAX技术。这里面可以考虑根据搜索出的结果进行分页的问题。2,页面风格改变:
重新从数据库中提取出数据,进行页面重写。3,数据存放:
肯定要存放在数据库中,不然怎么做搜索?
==========
对于你的这条可以用include文件包含的.采用shtml.你去看新浪的新闻一般都是为shtml.页面的布局可以单独的分离出来.生成的时候只要将这句写进去就可以了.你到时候修改改布局的时候可以不必理会静态页面里面已生成的东西.你去网上搜一下shtml语句.里面可以采用<!--#include file="dd.html"-->的.也就是说可以像ASP一样包含其它的页面
生成静态页面,和url重写的处理流程差不多
但是在客户端调用url请求时并不转到相应的真实url
而是如果不存在相应的html文件,则利用对应的apsx生成真实的html页面,然后直接去访问html
1.这样就不存在分页的问题,如果你aspx本身利用url questring分页了,相应的html自然也分页了
2.页面风格改变,同样的,你可以定义几种风格,在生成静态页面的时候分别放在不同的目录下
theme1\pag1.html和theme2\page1是不同风格的同一页面,这样又是用空间来交换的
或者你不想这样的话,可以定义风格变化之后删除所有自动生成的html这样也会自动重新用新的风格生成html
3.数据存放是一定要的,因为这才是根本,所有的aspx.html只是用于表现它的,皮之不存,毛将焉附
在静态页面里,需要动态的位置(例如页头页尾广告等)可以用iframe代替。
至于分页,你可以适当为你的文章归类,避免同一分类下的文章数量太多。
如果实在无法避免(例如某一分类下有上万篇文章),每增添删除文章都要重新生成分页页面,这样很不现实。
通常的做法是表态+动态:只把第一页做成静态,其余的仍然是aspx动态页面。因为第一页访问量是最大的。数据不存进数据库也可以,这个要按你老板的需求。搜索的话,可以另外做一个搜索引擎(网上有开源的)
但用javascript处理的话,有一个非常不好的地方是,页面上动态的内容不能被百度google等搜索引擎收录进去(搜索引擎不会去解析javascript的)。
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);
}
<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.......
''''''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
======================================================================问题就在于你为什么要用1,2,3,4,5这样的编号?你看新浪就是日期+时间+板块代码+其他乱七八糟的东西,这样就不会出现你说的情况了.
如果保证第一页一直排满一个PageSize?后边的页依次更新?
所谓页面不一定要对应服务器上一个真实的.html文件
在这种模式下,所谓一个页面只不过是数据库里一行记录,等你以后做多了就会明白了.
建议楼主参考一下目前的CMS系统的实现方法。
想看CMS源程序又没得,汗一下
关注关注.....................
点我BLOG进去看吧
http://vitality2007.cnblogs.com/
2.使用模板
3.应该存放到数据库 便于修改 怎么查都可以建议用正则查
动易CMS是这样解决的,打个比方有100条记录,每页20个记录,第一页用index.html,第二页用List4.html,第三页用list3.html,最后一页List1.html,每次生成只要生成最后两页就行了,但个办法的不好就是为了首页是20个记录,如果总记录/页数不是整数的话,首页和第一页会有重复的记录
www.6rooms.com这是一个视频网,会员每分钟都在上传视频,他也是采用HTML分页,处理得很好,不可能是重新生成所有分页,我现在还在研究他是怎么做到的
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