• 我的CMS开发记5 实现静态化页


          为了实现静态化页,我在博客园里可是搜了半天。最后找到两个方案:

    1.  http://www.cnblogs.com/hsqzzzl/archive/2005/10/23/260122.html文中的,生成静态页后,使用url重写重定向到静态页上。
    2. http://www.cnblogs.com/nurong/archive/2005/10/15/255439.html 使用404方式动态地生成静态页。

    那么这两种那个好呢?嘿嘿,本人的办法是,两种都实现,然后自己选择。是啊,不试一试怎么知道哪种效率更好。

    实现方面没啥多说的,基本和两位的办法差不多。但是在生成静态页时,我用的既不是filter的办法,也不是webclient的那种采集式的方法。因为我的系统比较特殊,是DNN式的单页面系统。所以,最佳的实现方法,是孟子E章的重写Render方法的办法。原来很简单,先将Render执行的结果保存在字符串里,然后保存到文件里,最后在Response.write。

    Code

    代码很简单,我就不多废话了。

    根据我的测试,404方式的静态化页,并没有出现先返回404再出现正确页面的情况。我用httpwatch 跟踪下来,http的头返回是这样的:如果html页不存在,那么返回302错误,然后转向到自定义404页。自定义404页根据参数判断请求的页面,如果合法,那么马上生成这个页面,这时候要注意,不能直接server.transfer到静态页。否则浏览器的url会错误。必须待生成完毕后 ,先返回一个(no-cahce)的标记    然后 response.redirect到静态页去。如果不指定no-cahce将会导致浏览器呈现一个空白页。如果请求非法,那么404页面就输出404标头。

       因此,404法静态化确实可行,而且不会出现错误地返回404的情况,大可以放心使用。主要代码:

    Code

     

    至于动态页,url重定向静态页,和404法静态页的效率,我这里也试了一下:在本地机器上,用httpwatch观察,在我充分地利用了缓存等的前提下,动态首页大约响应时间是0.010秒,而url法和404法两者的响应时间 均为0.001秒。httpwatch提示<0.001。

    但是在虚拟主机上,情况就大不相同了,我使用的是最便宜的空间,经过尝试,404法的速度要远高于url法。因为404法的静态页根本不经过asp.net,iis直接就处理了,而url法需要经过asp.net,由于虚拟主机的关系,始终是要慢了一点。

         维护方便性上,url法要优于404法,url法配置方便,并且更新也方便,可以将需要更新的页面的url存在内存里,每次rewrite的时候就可以判断了。而404法则比较麻烦,如果要更新页面,则必须要设法删除原来的静态页面,404页面才能再次生效。而且在配置时需要虚拟主机配置404页,否则根本无法使用。

         最后要感谢两位前辈趟出来的路,才能实现得比较顺利。




  • 相关阅读:
    使用 JavaScript 将 Silverlight 添加到网页
    网络和通信 Silverlight 中的 HTTP 通信和安全
    在Silverlight中访问Web服务 为 Silverlight 客户端生成服务
    图形三维效果
    关键帧动画
    ajax.dll 与 ajaxpro.dll的用法[摘自网络]
    FlashObject.js去虚框、传参数、获取URL参数
    WEB标准之CSS: 打造自己的重置样式reset.css[转]
    jquery.cookie.js[保存]
    FCKeditor在.net中详细配置[摘自网络]
  • 原文地址:https://www.cnblogs.com/ashei/p/1377260.html
Copyright © 2020-2023  润新知