求生成静态页思路,无限分类—emo)或思路!
因为公司要做一个新闻系统,要用到生成静态页面,和无限分类!在网上查了一下相关资料,生成静态页有url重写和用模板!现在也不知道这个新闻系统到底会有多少数据,不知道用url重写会不会太影响速度!因为每个新闻都有评论,每次评论得从新生成静态页!请大家提供点思路或给点demo,偶以前从没做过这两样东东。先送上200分,分不够在开帖给。先谢!
[解决办法]
顶上,期待中....
[解决办法]
SF
[解决办法]
js http://www.chinageren.com/jc/HTML/86173.html 我们公司网站也是这么做的
[解决办法]
<!--Main.Aspx-->
<%@ page language= "C# " %>
<%@ import namespace=System.IO %>
<script runat= "server ">
protected override void OnInit (EventArgs e)
{
int id;
try
{
id = int.Parse (Request.QueryString[ "id "]);
}
catch
{
throw (new Exception ( "页面没有指定id "));
}
string filename=Server.MapPath( "statichtml_ "+id+ ".html ");
//尝试读取已有文件
Stream s = GetFileStream (filename);
if (s != null)//如果文件存在并且读取成功
{
using (s)
{
Stream2Stream (s, Response.OutputStream);
Response.End ();
}
}
//调用Main_Execute,并且获取其输出
StringWriter sw = new StringWriter ();
Server.Execute ( "Main_Execute.aspx ", sw);
string content = sw.ToString ();
//输出到客户端
Response.Write(content);
Response.Flush();
//写进文件
try
{
using (FileStream fs = new FileStream (filename, FileMode.Create, FileAccess.Write, FileShare.Write))
{
using (StreamWriter streamwriter = new StreamWriter (fs, Response.ContentEncoding))
{
streamwriter.Write (content);
}
}
}
finally
{
//Response.End ();
}
}
static public void Stream2Stream (Stream src, Stream dst)
{
byte[] buf = new byte[4096];
while (true)
{
int c = src.Read (buf, 0, buf.Length);
if(c==0)
return;
dst.Write (buf, 0, c);
}
}
public Stream GetFileStream(string filename)
{
try
{
DateTime dt = File.GetLastWriteTime (filename);
TimeSpan ts=dt - DateTime.Now;
if(ts.TotalHours> 1)
return null; //1小时后过期
return new FileStream (filename, FileMode.Open, FileAccess.Read, FileShare.Read);
}
catch
{
return null;
}
}
</script>
<!--Main_Execute.aspx-->
<%@ page language= "C# " %>
<html>
<head runat= "server ">
<title> Untitled Page </title>
</head>
<body>
ID:
<%=Request.QueryString[ "id "]%>
</body>
</html>
其中原理是这样的.
Main_Execute.aspx是生成HTML的页面.
现在用Main.aspx来对它进行缓存.
过程如下:
首先根据页面参数算出文件名.(这个例子只根据Request.QueryString[ "id "]来算)
尝试读取缓存的文件.如果成功,那么Response.End();
如果不成功:
使用Server.Execute来调用Main_Execute.aspx,并且获取它的结果内容.
得到内容后,立刻输出到客户端.
最后把内容写进文件里,提供给下一次做为缓存度取.
[解决办法]
URL重写好,方便……
[解决办法]
mark一下
------解决方案--------------------
评论 一般都是 根据 你的新闻 页面
ID做成是iframe页面包含在里面的
主题内容使用静态页面
评论没有必要包含进来
[解决办法]
帮顶加收藏
[解决办法]
呵呵。今天你走运了。
准备到我工作1周年纪念日。
可以你我刚刚工作的时候作的面试作品,里面有生成HTML、无限分类的代码。
那个时候用的是.net 1.1+sql 2000的作的老版本的CMS的相关代码,那个生成有点原始,改变网站排版可能要修改程序.
要难点的,修改排版不用改程序的就反编译http://www.mytopwin.com/SoftShow.aspx?ID=16的程序。
代码都在TopWinCMS.BLL.Article命名空间里面,可以毫无保留的偷窥!^o^
其实生成HTML比较容易,批量生成就是用循环语句而已。
最最关键的地方是显示生成HTML进度,怎么样生成论万文章而不超时。
生成HTML非常浪费硬盘,我的网站本来用生成HTML,后来被迫从公司服务器搬走以后就用租2G的空间作网站,谁知道放都放不下来。
建议你放弃HTML方案,而用缓存来增加速度。
[解决办法]
帮顶加收藏
[解决办法]
winner2050(winner)
我并不觉得HTML没有什么不好,速度快是肯定的,特别是数据量和访问量大时对数据库的压力。而你所说的生成html占硬盘空间的问题我倒是觉得没什么,内容保存在数据库中,2G的页面至少也要用到1G的数据库空间吧?
[解决办法]
关注
[解决办法]
mark
[解决办法]
呵呵........
[解决办法]
不错,学习一下
[解决办法]
up
[解决办法]
我好把我一个网站生成HTML了不过不是重定向URL的,我是在后台设计一个模板,录入新闻之类的时就掉用不同模板生成HTML,其中评论和相关新闻是动态的。左边的最新新闻之类为一天生成一次。网站:http://www.jobdll.com;BLOG的设计也相同。
[解决办法]
..
[解决办法]
看你新闻量大不大。一般不是门户网站那大容量数据建议做个模版,然后在后台添加新闻时,将数据填充到该模版。如果小容量数据就用URL重写
[解决办法]
to:lazyfish(呆呆虫)
你这个评论发表后是不是还要更新一下HTML了,这样的话加大服务器的负担了吧,个人认为评论还是动态显示出来的好。
[解决办法]
学习
[解决办法]
生成静态页的例子有很多,如果想考虑分类,那就创建相应的文件夹就好了,然后按照日期建立文件夹,存入相应日期的静态页。
[解决办法]
up
[解决办法]
留下EMAIL,给你发一个例子过去
[解决办法]
学习,期待高手解决。
[解决办法]
mark一下,学习
[解决办法]
一般我们公司的评论是放在动态页面的,然后套在静态页面里面
[解决办法]
iframe个人认为还有用JS向DIV中写数据的好!我的做法是 <script scr= '*.aspx?newid=11 '> </script>
这个ASPX页面就生成一个评论的JS代码向主模板中写数据
[解决办法]
mark 一下
[解决办法]
show.aspx
[解决办法]
无限分类理论上只需要两个关键字段,一个是本ID,一个是父ID, 用递归就可以构造出树型的算法.
------解决方案--------------------
不错哦