zoukankan      html  css  js  c++  java
  • 将aspx的动态页面生成静态的HTML页面

    我们开发的asp.net系统中,有些动态的页面常被频繁,如我们的首页index.aspx它涉及到大量的数据库查询工作,当不断有用户它时,服务器便不断向数据库的查询,实际上做了许多重复的工作

    服务器端的myPage.aspx

    客户端显示myPage.htm

    客户端

    针对这种资源的浪费情况,我们现在来设计一个解决方案。我们先将那些一段时间内内容不会有什么改变,但又遭大量的动态页面生成静态的页面存放在服务器上,当客户端发出请求时,就让他们直接我们生成的静态页面,过程如下图。

    客户端显示myPage.htm

    客户端

    Execute

    服务器端的myPage.aspx

    服务器端的myPage.htm

    现在我们需要一个后台程序来完成这些事情。

    我们可将此做成一个类classAspxToHtml ,其代码

    using System;

    using System.IO;

    using System.Web.UI;

    namespace LeoLu

    {

    /// summary

    /// AspxToHtml 的摘要说明。

    /// /summary

    public class AspxToHtml

    {

    /// summary

    /// Aspx文件url

    /// /summary

    public string strUrl;

    /// summary

    /// 生成html文件的保存路径

    /// /summary

    public string strSavePath;

    /// summary

    /// 生成html文件的文件名

    /// /summary

    public string strSaveFile;

    public AspxToHtml()

    {

    //

    // TOD 在此处添加构造函数逻辑

    //

    }

    /// summary

    /// 将strUrl放到strSavePath目录下,保存为strSaveFile

    /// /summary

    /// returns是否成功/returns

    public bool ExecAspxToHtml()

    {

    try

    {

    StringWriter strHTML = new StringWriter();

    System.Web.UI.Page myPage = new Page(); //System.Web.UI.Page中有个Server对象,我们要利用一下它

    myPage.Server.Execute(strUrl,strHTML);//将asp_net.aspx将在客户段显示的html内容读到了strHTML中

    StreamWriter sw = new StreamWriter(strSavePath+strSaveFile,true,System.Text.Encoding.GetEncoding("GB2312"));

    //新建一个文件Test.htm,文件格式为GB2312

    sw.Write(strHTML.ToString()); //将strHTML中的字符写到Test.htm中

    strHTML.Close();//关闭StringWriter

    sw.Close();//关闭StreamWriter

    return true;

    }

    catch

    {

    return false;

    }

    }

    /// summary

    /// 将Url放到Path目录下,保存为FileName

    /// /summary

    /// param name="Url"aspx页面url/param

    /// param name="Path"生成html文件的保存路径/param

    /// param name="FileName"生成html文件的文件名/param

    /// returns/returns

    public bool ExecAspxToHtml(string Url,string Path,string FileName)

    {

    try

    {

    StringWriter strHTML = new StringWriter();

    System.Web.UI.Page myPage = new Page(); //System.Web.UI.Page中有个Server对象,我们要利用一下它

    myPage.Server.Execute(Url,strHTML); //将asp_net.aspx将在客户段显示的html内容读到了strHTML中

    StreamWriter sw = new StreamWriter(Path+FileName,true,System.Text.Encoding.GetEncoding("GB2312"));

    //新建一个文件Test.htm,文件格式为GB2312

    sw.Write(strHTML.ToString()); //将strHTML中的字符写到Test.htm中

    strHTML.Close();//关闭StringWriter

    sw.Close();//关闭StreamWriter

    return true;

    }

    catch

    {

    return false;

    }

    }

    }

    }

  • 相关阅读:
    [置顶] cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台
    15 个 Docker 技巧和提示
    Docker资源管理探秘:Docker背后的内核Cgroups机制
    SVN通过域名连不上服务器地址(svn: E175002: OPTIONS request failed on '/svn/yx-SVN-Server' Connection refused: connect)
    图片点击放大功能
    jquery-选择checkbox的多种策略
    HTML-input标签需设置的属性
    MyBatis-配置缓存
    SpringMVC redirect乱码问题
    Mysql-左连接查询条件失效的解决办法
  • 原文地址:https://www.cnblogs.com/eart/p/2057266.html
Copyright © 2011-2022 走看看