日期:2014-05-19  浏览次数:20348 次

静态页面生成技术咨询!
问题:公司现在做的这个项目,要求全站生成html页面,现在以确定终级文章页面用模板生成,但是首页和二,三级页面要怎么生成html页面?
1.因为首页全都是一些二,三级页面分类的标题,内容也比较多,所以不能用模板生成!
2.用url重写生成伪html页面,这倒是最好的办法,可公司现在没有自己的服务器不能设置iis,这办法好像也行不通.
3.IO输出生成html,这种方法怎么做的页面上链接的正确性?
4.偶天天上csdn怎么可用分一分也没加!
5.请大家帮帮忙,周三交货:(
分不够还可以在加!
先谢了!

------解决方案--------------------
二三级页面的链接是指定地址的吧?比如说,新闻,公告。。。。

如果不是指这下地址,那在生成的时候指定

比如文章的标题,
------解决方案--------------------
帮顶
------解决方案--------------------

------解决方案--------------------
没用过,帮顶
------解决方案--------------------
啊没有自己的IIS还生成静态的干什么用呀?
------解决方案--------------------
你这个要求的话就需要自动的生成栏目,
首页先建立元素(可能是一条标题),模板(可能是一块栏目),最后是一张页面,里面包含着各种元素和模板;最后生成静态的页面;
你如果按照这样的思路做这个项目的话,别说周三了,你长假结束也不一定做得完的
------解决方案--------------------
一般只有具体内容才生成静态的
首页生成,调用这个方法
public bool GetUrltoHtml(string Url,string MapPath)
{

//try
//{
MapPath = HttpContext.Current.Server.MapPath(MapPath);
// if(File.Exists(MapPath))
// {
// File.Delete(MapPath);
// }
StringBuilder htmltext=new StringBuilder();
System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
// Get the response instance.
System.Net.WebResponse wResp =wReq.GetResponse();
// Read an HTTP-specific property
//if (wResp.GetType() ==HttpWebResponse)
//{
//DateTime updated =((System.Net.HttpWebResponse)wResp).LastModified;
//}
// Get the response stream.
System.IO.Stream respStream = wResp.GetResponseStream();
// Dim reader As StreamReader = New StreamReader(respStream)
Encoding code = Encoding.GetEncoding( "gb2312 ");
using (StreamReader reader = new StreamReader(respStream,code))
{

string line;
while ((line = reader.ReadLine()) != null)
{
htmltext.Append(line+ "\r ");
}
reader.Close();
}

using(StreamWriter sw=new StreamWriter(MapPath,false,System.Text.Encoding.GetEncoding( "GB2312 ")))
{
sw.WriteLine(htmltext);
sw.Flush();
sw.Close();
return true;
}

//}
// catch
//{
// return false;
// }

}
------解决方案--------------------
我刚刚在博科写了一篇。
qinghunt.cnblogs.com
第一个问题我不是很理解,分类标题怎么就不能了?在相应页面的添加模块设置triger,有新内容添加就Render一次新页面(其实我是使用删除静态页面)。所以首页是可以的。
2.略过。
3.如果aspx Render到客户端的没有问题,那么这里就不应该有问题。
4.RP问题,呵呵
5.多多益善。

------解决方案--------------------
主要的思想是,通过在basePage重载OnInit方法(判断aspx对应的静态页面是否存在,来决定是生成还是重定向)和Render方法(到这里了可以确定页面是不存在的,所以把要生成的内容流存到静态页面中去,而不是直接render到客户浏览器,最后重定向)。在内容没有更新时,页面请求都会被OnInit重定向到静态页面(也可以确定是最新内容)。当有内容更新的同时,删除内容相关的所有静态页面(可动态配置),达到更新静态页面的目的。另外注意一点的是,我的实际使用中,因为不同页面定位的路径不一样,所以我写了一个BasePage,还有多个moduleBasePage,最后页面是继承的moduleBasePage,我想你也会遇到一样的问题。
------解决方案--------------------
其实是很没必要把首页和二、三级页面生成静态的
这样做只要数据库一改变,你就得重新生成一次
------解决方案--------------------
mark
------解决方案--------------------