asp.net应用程序html化的一个想法

来源:互联网 发布:明星到底有多有钱知乎 编辑:程序博客网 时间:2024/05/29 11:16

======================================================
注:本文源代码点此下载
======================================================

稍大型的网站都会将asp.net的页面缓存起来,用户访问时首先检查对应的html文件是否存在,不存在时才去生成一次。或干脆只将asp.net作为后台程序,在后台程序生成的整站的html文件,网站只以html的形式提供给浏览者。后者自成系统,效率比前者好,但比前者要复杂多了,并不是我能三语两言能说的;我只想,前者有没有简便一些的asp.net程序html化的方式呢?

为一个asp.net程序添加一个httpmodule,做了一个小尝试

httpmodules>

add name="myhtmlmodule" type="modulelib.myhtmlmodule, modulelib" />

httpmodules>

myhtmlmodule.cs很简单,他实现ihttpmodule接口

public void init(httpapplication context)

{

// todo:添加 htmlmodule.init 实现

context.beginrequest+=new eventhandler(context_beginrequest);

}

private void context_beginrequest(object sender, eventargs e)

{

httpapplication application = (httpapplication)sender;

httpcontext context = application.context;

switch(context.request.path)

{

case "/httpmoduletest/htmlpage.aspx?page=1":

context.rewritepath("htmlpage_page_1.htm");

break;

case "/httpmoduletest/htmlpage.aspx?page=2":

context.rewritepath("htmlpage_page_2.htm");

break;

}

}

上面的context_beginrequest方法是很笨的,只是为了测试,实际中用正则表达式把aspxhtml的命名对应起来就简单了。

测试基本上证明想法是行得通的。测试项目中的“htmlpage.aspx”始终没有得到执行的机会,而2个html也如期的出现在ie上。

那么在实际应用时,使用正则表达式获取对应的html文件名,检测html是否存在,不存在,访问aspx文件并保存其生成的内容。存在当然就好办了,直接rewritepath(html)。

效率自然无法跟asp.net生成的纯html网站比。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
原创粉丝点击