小强


For my summer
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用HttpHandler生成静态页面(编辑过)

Posted on 2005-10-23 02:22  小 强  阅读(8088)  评论(64编辑  收藏  举报

本文于2005-11-25编辑过, 更正两处严重Bug,请需要的朋友自行下载。

源文件下载

感谢Nick指出程序里的错误,并给出修改意见.

看了静态页转换平台(StaticPol)-静态页生成终极解决方案后,就做了我现在放上来的这个东西,也是转成静态页面的,紧限于dotNet使用(我是用HttpHandler处理的),并且也很简单,主要是实现我想要的功能了,不足的地方肯定是很多的(后面我会提到两点),希望不是耽误你的时间。
下面说说具体的实现:
1.Web.config里的配置
<!--配置策略config文件地址-->
<appSettings>
  <add key="ConfigFilePath" value="Config/StaticTactic.Config" />
</appSettings>
......(省略)
<!--配置httpHandler-->
<httpHandlers>
  <add path="*.aspx" verb="*" type="Hsq.Library.ToStaticPage.ProcessorHandler, ToStaticPage"/>
</httpHandlers>

2.策略配置文件
<!--
Rules.Root : 生成的静态页面在Web站点中的根目录文件夹
Rules.TimeSpan  : 默认的过期时间差(以 分钟 为单位)
LookFor : 需要生成静态页面的页面
TimeSpan : 静态页面的过期时间差(以 分钟 为单位)
-->
<StaticTacConfig>
  <Rules Root="HTML" TimeSpan="10">
    <TacRule LookFor="Default.aspx">
      <TimeSpan>1</TimeSpan>
    </TacRule>
    <TacRule LookFor="Product/Sort.aspx">
      <TimeSpan>10</TimeSpan>
    </TacRule>
  </Rules>
</StaticTacConfig>

3.HttpHandler的实现 这个比较简单的,大家看看源代码就知道了。 主要是判断 请求的页面是否需要生成静态页面, 若需要,则判断 静态页面是否存在 或者存在但是否已经过期 不存在,或存在但过期的页面需要重新生成。