首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于整个网站生成静态页有关问题!

2012-01-15 
关于整个网站生成静态页问题!!!把整个网站全生成为静态,有一个问题想不明白,就是分页显示的问题.当生成一

关于整个网站生成静态页问题!!!

  把整个网站全生成为静态,有一个问题想不明白,就是分页显示的问题.当生成一个静态页面时,原来所有分页上面的内容都有了变化...怎么实现呢,不会生成一个静态文章,就把整个栏目的分页页面都生成一下吧..... 如果每增加\删除文章都把所有分页都生成一遍,给服务器的压力是巨大的。

  大型门户网站是不是有专门的生成静态软件?如何让每个栏目都相隔一定时间自动生成静态文件?网站全部生成静态页的思路是什么?有这类网站的例子吗?或者有生成静态页的asp、asp.net组件吗?

[解决办法]
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Mysqlserver;
using System.IO;
using System.Text;
namespace NewsAdd
{
public partial class Admin_AdminPanel_NewsAdd : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
string strDate = DateTime.Now.ToString("yyMMdd") + "\" + DateTime.Now.ToString("yyyymmddhhmmss");
string strFileName = strDate + ".shtml";
string strTitle=Request.Form["Title"].ToString().Trim();
string strContent=Request.Form["Content"].ToString().Trim();
string[] content = strContent.Split(new Char[] ...{'|'});
int upbound = content.Length;
SqlServerDataBase db = new SqlServerDataBase();
bool success = db.Insert("insert into inNews(Title,Content,FilePath)values('" + strTitle + "','" + strContent + "','" + strFileName + "')", null);

string dir = Server.MapPath("../../"+"NewsFiles/"+DateTime.Now.ToString("yyMMdd"));
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}

try
{
for (int i = 0; i < content.Length; i++)
{
//string[] newContent = new string[4];
StringBuilder strhtml = new StringBuilder();
using (StreamReader sr = new StreamReader(Server.MapPath("../../" + "NewsFiles/") + "\template.html",Encoding.GetEncoding("gb2312")))
{
String oneline;
while ((oneline = sr.ReadLine()) != null)
{
strhtml.Append(oneline);
}
sr.Close();
}
DataSet ds = db.Select("select top 1 NewsId from inNews order by NewsId desc", null);
string strTable = "<table><tr><td>$upUrl</td><td>$Number</td><td>$downUrl</td></tr></table>";
string FilePath="";
strhtml = strhtml.Replace("$Title", strTitle);
strhtml = strhtml.Replace("$NewsId", ds.Tables[0].Rows[0]["NewsId"].ToString());
strhtml = strhtml.Replace("$Time", DateTime.Now.ToString("yyyy/MM/dd"));
strhtml = strhtml.Replace("$Content", content[i]);
string strNumber = "";
for (int m = 1; m <=upbound; m++)
{
if (m == 1)
strNumber = strNumber + " ["+"<a href=" + "../" + strDate + ".shtml" + ">" + m + "</a>"+"] ";
else
{
int n = m - 1;
strNumber = strNumber + " [" +"<a href=" + "../" + strDate + "_" + n + ".shtml" + ">" + m + "</a>"+"] ";


}
}
if (upbound == 0)
{
FilePath = Server.MapPath("../../") + "NewsFiles" + "//" + strDate + ".shtml";
strhtml = strhtml.Replace("$Pager", "");
}
else
{
if (i == 0)
FilePath = Server.MapPath("../../") + "NewsFiles" + "//" + strDate + ".shtml";
else
FilePath = Server.MapPath("../../") + "NewsFiles" + "//" + strDate + "_" + i + ".shtml";

if (i == 0)
strTable = strTable.Replace("$upUrl", ""); 

if (i <= 1)//上一页分页
strTable = strTable.Replace("$upUrl", "<a href=" + "../" + strDate + ".shtml" + ">上一页</a>");
else
{
int p = i - 1;
strTable = strTable.Replace("$upUrl", "<a href=" + "../" + strDate + "_" + p + ".shtml" + ">上一页</a>");
}

if(upbound==1)
strTable = strTable.Replace("$Number", "");
else
strTable = strTable.Replace("$Number", strNumber);
if(i==upbound-1)
strTable = strTable.Replace("$downUrl", "");

if (i != upbound - 1)
{
int q = i + 1;
strTable = strTable.Replace("$downUrl", "<a href=" + "../" + strDate + "_" + q + ".shtml" + ">下一页</a>");
}
else
{
int j = upbound - 1;
strTable = strTable.Replace("$downUrl", "<a href=" + "../" + strDate + "_" + j + ".shtml" + ">下一页</a>");
}

strhtml = strhtml.Replace("$Pager", strTable);
}
FileInfo finfo = new FileInfo(FilePath);
using (FileStream fs = finfo.OpenWrite())
{
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
sw.WriteLine(strhtml);
sw.Flush();
sw.Close();
}
}
}
catch (Exception err)
{
Response.Write(err.ToString());
}
}
}
}

[解决办法]
分页大概有两种:一用xml
另就是向html填数据。

分页可设行字符长度吧,或加个标记。
[解决办法]
mark
[解决办法]
up
[解决办法]
全站分页主要是对列表进行分页 你也说过如果有100页的话就要重新生成100个页面 这是肯定的

不过也可以把1000条文章放在XML中,通过HTML中的JS读取 分页显示也是可以的

另:一个类别如果有1000篇文章的话,每页分成10条是不是有点小气了 ^_^
------解决方案--------------------


用动态分算了
[解决办法]
2楼贴的代码是模版替换的办法。比较简单易用。

另外利用JS来实现调用分页也是不错的选择。
[解决办法]
我也想过把我们的门户网站全部改成html的,但想到数据量太多(50k/page),服务器空间是否足够,就没有生成了,只是做了url重写
 
[解决办法]
关注 学习!
[解决办法]
这个问题, 一直没得到解决~~

热点排行