静态页系列(一) 访问计数、首页静态页

        首先声明一下,这个静态页的生成是用了Eric兄的辛苦劳动成果:EFPLatform.CodeGenerator。在这里,先忠心感谢Eric兄,辛苦了!!

        静态页的生成,多种因素,有着诸多不同的实现方式。孰优孰劣,适合自己的最好,这里不必妄言。静态页生成后,又伴之而来其他的问题,如:静态页的生成,生成后增加访问计数,异步添加评论等等。关于如何生成静态页,有了Eric兄,我在这也就没有必要赘述了。

        下面谈谈生成静态页之后出来的问题:
        限于篇幅,这次先来两个小模块:1.增加访问计数  2.生成首页

        1、生成好的静态页增加访问计数:
我的做法是建立一个增加引用计数的动态页,这个页接受参数,然后根据参数增加访问计数。在静态页里用<script src="/Module_News/Increase.aspx?id=ID编号" type="text/javascript"></script>
调用这个页增加访问计数
cs代码:

 1if (!this.IsPostBack)
 2        {
 3            if (Request.QueryString["id"!= null)
 4            {
 5                Module_News mnMain = new Module_News();
 6                mnMain.Module_News_FluxIncrease(Request.QueryString["id"].ToString());
 7                //Response.Redirect(string.Format(@"/Html/News/3/{0}.html", Request.QueryString["code"].ToString()));
 8            }

 9            else
10            {
11                Response.Write("您请求的数据不存在");
12            }

13        }

注意:页面元素为空;另外还可以换成ashx文件。

        2、首页生成静态页
        关于首页,我之前是用的缓存。但限于自身的技术水平,缓存带来的效果并不理想。且不知为什么首页的个别链接还会出错。所以,决定用静态页替代缓存。这里的首页静态页我没有用模板生成,毕竟首页的东西太多,这样做太繁杂。
这里取了个巧,重写Render:
代码:

 1protected override void Render(HtmlTextWriter writer)
 2    {
 3        System.IO.StringWriter html = new System.IO.StringWriter();
 4        System.Web.UI.HtmlTextWriter tw = new HtmlTextWriter(html);
 5        base.Render(tw);
 6        System.IO.StreamWriter sw = new System.IO.StreamWriter(Server.MapPath("index.html"), false, System.Text.Encoding.Default);
 7        sw.Write(html.ToString());
 8        sw.Close();
 9        tw.Close();
10        //Response.Write("页面生成成功!");
11    }

        好了,页面生成了,问题又来了,怎么更新?是隔一段时间生成一次,还是有更新就重新生成...
我的做法是让用户自己更新。在页里加上下面这个

<script language="javascript" type="text/javascript">
//请求Default.aspx,调用Render重新生成首页静态页
document.write('<script type="text/javascript" src="/Default.aspx"><'+'/script>');
</script>

这样一来,用户访问一次生成好的静态页,就调用一次首页,然后重新生成静态页。

原文地址:https://www.cnblogs.com/xpengfee/p/902542.html