100分技术讨论,关于asp.net生成html静态页,目录页分页静态化问题
最近在做一个 全html 生成问题,为了方便讨论,简单说一下:
主要是新闻系统,全站静态生成
主题,子类,正文,
新建一个主题 就 新建一个文件夹 在网站下, 如http://aa.cn/games.
创建一个子类就在 所属主题下面 新建文件夹, 如 http://aa.cn/games/class
正文是先做了个模板,然后添加的时候,静态生成她,并放到相对应的目录下
如:
http://aa.cn/games/class/200709220445.html
以上这些都可以实现.
那么在显示子类页的时候 也就是
http://aa.cn/games/class/
应该是显示文章列表的,并且要静态化,这些都可以做到
关键是静态化要分页
怎么解决新添加一个文章在最上面,并且不用全部生成列表呢?
------解决方案--------------------显示文章列表 也用后台生成..就可以实现....
------解决方案--------------------肯定是要重要生成的...一般列表页都是做成伪静态的,如果做成静态牺牲太大了
------解决方案--------------------般列表页都是做成伪静态的
------解决方案--------------------URL REWRITE
------解决方案--------------------一般是伪静态!!!!也就是url rewrite!!实现还是动态页面!!
------解决方案--------------------新添加一个文章在最上面 可以试试获取子类中文章生成的时间,然后按时间先后显示到列表
------解决方案--------------------实际上,只要能动态看到的东西,就可以生成静态的页面.
提供个思路,因为我也是看过一个cms 是这样做的,
写个页面,这个页面接收一个文章ID,然后就可以显示出该显示的东西,比如页面banner,栏目类别,文章内容 等等, 这个可以实现吧. 然后,再写个生成静态页面的页面,给前面的那个页面传个参数, "请求 " 那个页面,把请求得到的字节流写入静态文件.
其实说得很含糊,这里面还包括了生成文件名等等好多细节,我也不熟悉,大家一起交流吧.
------解决方案--------------------如果要不全部生成,除非排序是ASC的
一般情部,分页不做静态
还有,生成静态的页也不是按类分放的,要按日期
如果一个文件夹下有1000W个HTML页的话,那OS要花大量些时间去这个文件夹下找
但是把1000W个文件分别放在1000个文件夹下,那么就可以可以按路径准确查找
------解决方案--------------------将Asp.net页面输出为HTML
http://blog.csdn.net/octverve/archive/2007/09/04/1771107.aspx
anncesky(不想飞,想一步跨过太平洋) ,说设计思路是可行的。
------解决方案--------------------http://blog.csdn.net/octverve/archive/2007/09/04/1771107.aspx
用的也是类似urlrewriter,不是静态页面生成
------解决方案--------------------mark 以后用得到
------解决方案--------------------using System;
using System.Data;
using System.Configuration;
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 System.IO;
using System.Text;
using System.Net;
/// <summary>
/// SysImports 的摘要说明
/// 静态页面生成类
/// </summary>
public class SysImports
{
/*************************************
*
*************************************/
private string _path= " ";
private string _fileName;
private string _url=HttpContext.Current.Request.Url.ToString();
private Encoding _code=Encoding.GetEncoding( "utf-8 ");
private string _webPath = " ";
/*************************************
* 设置生成静态也的文件编码
*************************************/
public Encoding code
{
set
{
_code =value;
}
get
{
return _code;
}
}