【求教】asp.net生成静态页

一滴巫血 2011-01-14 03:19:52
最近想学习一下怎么把网站生成静态页的形式展现。听说可以通过动态网站的url方式进行生成静态页面,哪位可以教教我怎么用这种方式实现啊,具体原理是怎么样,怎么和整个网站结合的啊。我在网上已经看了相关资料都是给一段代码去生成静态页。我也测试了的,但是这怎么和我的网站结合起来啊。比如我在地址栏输入我的网址。然后出来的首页是一个静态页面,里面的新闻也是静态页面的链接。这都是怎么操作的啊。

不要直接发一个代码,这种代码网上都可以找到,也不要发用模板替换的方式。
...全文
164 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2011-01-14
  • 打赏
  • 举报
回复
静态页面使用 urlrewriter静态
context.rewriterpath
asp.net mvc route
protected override void Render(HtmlTextWriter writer) {
StreamWriter r=new StreamWriter(Server.MapPath(""), false,System.Text.Encoding.UTF8);
HtmlTextWriter h=new HtmlTextWriter(r);
base.Render(h);
r.Close();
h.Close();
}
StringWriter wr = new StringWriter();
Server.Execute("", wr);
this.lit.Text = Server.HtmlEncode(wr.ToString());
File.WriteAllText(Server.MapPath(""), wr.ToString());
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yjqi3316 的回复:]
还有就是有什么好的效率生成大批量的静态页啊。
[/Quote]

如果仅仅要效率(而不是为了在服务器上删除整个asp.net系统),那么先把aspx都加上一行OutputCache声明就行了。
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yjqi3316 的回复:]

因为我现在生成静态页的方式是通过一个方法实现的,就是传递一个动态地址过去,然后自动生成对应的静态页面。

就是不知道怎么和整站结合起来,因为页面里面还有好多链接,比如说分页一类。

还有就是有什么好的效率生成大批量的静态页啊。
[/Quote]

根据你们的所谓静态页面的命名规则而定,然后遍历产生的html代码,查找符合此规则的url,重写其url。
ChinaXtHuLang 2011-01-14
  • 打赏
  • 举报
回复
抓取方式
protected void Page_Load(object sender, EventArgs e)
{
//调用方法
this.DownUrltoFile("http://www.baidu.com", "html/baidu.htm", "GB2312");
}

/// <summary>
/// 生成网页文件
/// </summary>
/// <param name="url">远程URL</param>
/// <param name="filename">生成文件名路径</param>
/// <param name="pagecode">目标URL页面编码</param>
protected void DownUrltoFile(string url, string filename, string pagecode)
{
try
{
//编码
Encoding encode = Encoding.GetEncoding(pagecode);
//请求URL
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
//设置超时(10秒)
req.Timeout = 10000; this.NotFolderIsCreate(filename);
//获取Response
HttpWebResponse rep = (HttpWebResponse)req.GetResponse();
//创建StreamReader与StreamWriter文件流对象
StreamReader sr = new StreamReader(rep.GetResponseStream(),encode);
StreamWriter sw = new StreamWriter(Server.MapPath(filename), false,encode);
//写入内容
sw.Write(sr.ReadToEnd());
//清理当前缓存区,并将缓存写入文件
sw.Flush();
//释放相关对象资源
sw.Close();
sw.Dispose();
sr.Close();
sr.Dispose();
// Response.Write("生成文件" filename "成功");
} catch (Exception ex) {
//Response.Write("生成文件" filename "失败,原因:" ex.Message);
Response.Write("错误信息:"+ex.Message);
}
}

/// <summary>
/// 文件夹不存在则创建
/// </summary>
/// <param name="filename">文件名所在路径</param>
protected void NotFolderIsCreate(string filename)
{
string fileAtDir = Server.MapPath(Path.GetDirectoryName(filename));
if (!Directory.Exists(fileAtDir)) Directory.CreateDirectory(fileAtDir);
}

模版方式
http://www.cnblogs.com/hulang/archive/2010/11/03/1867840.html
一滴巫血 2011-01-14
  • 打赏
  • 举报
回复
因为我现在生成静态页的方式是通过一个方法实现的,就是传递一个动态地址过去,然后自动生成对应的静态页面。

就是不知道怎么和整站结合起来,因为页面里面还有好多链接,比如说分页一类。

还有就是有什么好的效率生成大批量的静态页啊。
ChinaXtHuLang 2011-01-14
  • 打赏
  • 举报
回复
2种方式。
一种使用模版方式。另外就是抓取方式。
髙興~ 2011-01-14
  • 打赏
  • 举报
回复
动态网站的url方式进行生成静态页面

这是什么意思?

把网站做成静态,就是为了访问速度快。

你的意思是,输入动态网址,之后生成静态页面,再读取该静态页面?

这。。。

静态页面都是事先在后台生成好的,添加一天新闻,把该新闻单页文件写出来,再把列表页文件改了。
其他相关的都得动。

之后读取的时候,输入的是静态页的地址。


你的网站现在已经做好了,把后台加上生成静态页部分就可以了。

不过你得累死。
现在你要输入动态网址,那岂不是还需要URL重写?
Hertz_liu 2011-01-14
  • 打赏
  • 举报
回复
使用静态模板
sunrui521 2011-01-14
  • 打赏
  • 举报
回复
正则 把里面的一些动态的链接 换成静态后 再生成 静态页面
wyfde123 2011-01-14
  • 打赏
  • 举报
回复
比如页面上有固定的头,头的链接在aspx里面就可以写成指向静态页的目录

如果是动态的新闻列表,也可以在页面上预留下那块,
放一个自定义控件,后台动态从数据库取出静态页面的链接,拼接成html输出到页面上
一滴巫血 2011-01-14
  • 打赏
  • 举报
回复
还有就是传单一的url过来,确实可以生成静态页,但这块怎么和我整个网站结合啊。我又不是只把一条新闻生成静态页,比如:原始url地址是http://www.yuming.com/,我确实可以根据这个地址生成一个首页的静态页面,但是这个首页里面其他的链接呢,他们怎么生成静态啊。单一地址生成静态页面我知道怎么做。网上很多代码。现在我就是弄不清楚对于整站来说是怎么操作的。最好详细说一下原理。
一滴巫血 2011-01-14
  • 打赏
  • 举报
回复
不是重写,伪静态这个好弄。
wxh291 2011-01-14
  • 打赏
  • 举报
回复
你说的应该是URL重写.不知道我说的对不对.如果对的话,就是baidu下url重写方面的问题.

62,074

社区成员

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

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

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

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