静态页更新,如果文章的分类显示列表页(多页)

cloudandy 2007-03-31 09:53:59
问题是这样的:
比如我做了一个文章管理系统,前台生成了静态页,
就拿文章的分类显示列表页来说,比如有一个ClassID为3的文章分类
我会根据页尺寸生成3_1.aspx,3_2.aspx,...... 3_200,3_201,...这样的页面。

1.如果我在该类别下添加了文章,如何更新对应列表页?
2.如果我在该类别下删除了文章,如何更新对应列表页?

对更新操作有以下要求:
1.不能采用全部更新分类页的方式(因为如果记录过多,效率太低)

顺便给出我的静态页生成方式:
1. /// <summary>
/// Make
/// </summary>
/// <param name="url"></param>
/// <param name="toPath"></param>
public static void Make(string url,string toPath)
{
HttpContext context = HttpContext.Current;
string AppPath = context.Request.PhysicalPath;

if (NeedMake(AppPath) == false) return;

StreamWriter sw = new StreamWriter(AppPath, false, Encoding.GetEncoding("GB2312"));
context.Server.Execute(url, sw);
sw.Close();


}


2. /// <summary>
/// ModuleRewriter_BeginRequest
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
public void ModuleRewriter_BeginRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication) source;
HttpContext context = application.Context;

string newPath = null;
string path = context.Request.Path;
bool isReWritten = RewriteUrl(path,out newPath);

if (isReWritten && newPath != null)
{

FileMaker.Make(newPath, path);

}

}


3.
<urls>
<!--
****************
注意, 在url查询字符串中,字符 ^ 将被字符 & 替换.
the value is replace when the SiteUrls.config file is processed.
****************
-->
<url name="cat_show" pattern="/Article/Cat/(\d+).aspx" vanity="/Article/SrvPort/class_list.aspx?class_id=$1"/>
<url name="aritcle_show" pattern="/Article/File/(\d+).aspx" vanity="/Article/SrvPort/article_show.aspx?id=$1"/>
<url name="class_show" pattern="/Article/Class/(\d+)_(\d+).aspx" vanity="/Article/SrvPort/class_show.aspx?class_id=$1^page_id=$2"/>
<url name="article_default" pattern="/Article/Default.aspx" vanity="/Article/SrvPort/Default.aspx"/>

</urls>



...全文
263 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
antiking 2007-03-31
  • 打赏
  • 举报
回复
文章保存在数据库里会很大么!维护也方便.
cloudandy 2007-03-31
  • 打赏
  • 举报
回复
to:closetome

请仔细看下我的需求,谢谢
cloudandy 2007-03-31
  • 打赏
  • 举报
回复
to:heyjude1983

我的文章分类列表显示页要全部静态生成。

“是否发布为静态页面“这个功能我想我不需要的,请仔细看下我的需求,谢谢
cloudandy 2007-03-31
  • 打赏
  • 举报
回复
看清楚,我要生成的是:文章的分类显示列表页
CLASSID不会变,
heyjude1983 2007-03-31
  • 打赏
  • 举报
回复
哦,你的文章分类列表页是动态的哇?那么你在每条新闻的属性中添一个“是否发布为静态页面“这样的一个字段嘛,你的3_1.aspx.....3_200.aspx在查询的时候,就查询已经发布成静态页面这个字段是true就可以了撒,添加、删除都不会影响这个页面,都不用重新生成啊,只用在删除的时候修改那个字段的值就可以了哈,
cloudandy 2007-03-31
  • 打赏
  • 举报
回复
我想过采用过期的办法来稿比如:拿当前的文件的最后修改时间和当前时间比较,如果相差N分钟就生成,但是,可以想到是,对于大量的文章站点来说,同一篇文章的2次访问可能相差很多,可能是1天。。,这样就等于每次访问时都要生成。
burn3tt 2007-03-31
  • 打赏
  • 举报
回复
这个就看你设计时候的思想了。
比如你写了一个HtmlRender的抽象类,你每一个页面都是继承了这个抽象类,并实现里边的HtmlGenerator抽象方法,那么你每次生成页面的时候,都会自动调用上边的方法,也就是无论你走了多少层,那么这个方法就被调用了多少次,换成你的说法,就是无论你的页面生成了多少页,多少层,在每次调用这个方法的时候,都会自动重新生成新的页面。
heyjude1983 2007-03-31
  • 打赏
  • 举报
回复
你没有必要生成3_1,3_2这样的页面撒,生成的静态页面全部用新闻本身的ID来编号嘛,如果有2页,如果ID为22,那么就是22_1.html,22_2.html撒,这样是不是要好操作一点呢?
因为你说的那个CLASSID,问题是CLASSID可能会改变的嘛
cloudandy 2007-03-31
  • 打赏
  • 举报
回复
我目前的生成模式不是一下全部生成:
private static bool NeedMake(string AppPath)
{
//如果文件不存在,就生成它。
if (File.Exists(AppPath) == false) return true;




return false;
}
hy_lihuan 2007-03-31
  • 打赏
  • 举报
回复
这个好像没有办法,你添加或者删除一条数据,就需要分页的页面全部生成一遍;
不过我也是听说,你可以考虑前5页生成静态的,后面的就是动态的,这样的话你添加数据就只要生成5页就好了;
另一种解决办法就是,在用户第一次访问的时候生成页面(除了首页把),这样的话就不需要你一下全部生成了;
这两种方法在我们单位的系统里面度没有实现,所以有什么难度不太清楚
weiqiaoxyz 2007-03-31
  • 打赏
  • 举报
回复
帮顶

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧