制作一个aspx页面,专门用来生成各个动态aspx页面的静态页面。如下图所示,仅将内容页和主页面生成静态页面,当然本例只是一个简单的范例,实际情况如很复杂,但原理都是相同的。

生成内容页:

本例中的不同内容页以不同的ID来进行区分,输入不同的ID值,点击“生成内容页”按钮,将调用执行后台代码(如代码),进行生成html页面。

如果内容页的内容发生变化,再次执行上面的步骤,重新生成即可。

下图代码中的参数分别表示动态url、静态网站路径、静态文件名称,需要更加实际情况修改。

           StringWriter sw = new StringWriter();
string cid = this.TextBox1.Text.Trim();
Server.Execute("/Detail.aspx?id=" + cid, sw);
string contentStr = sw.ToString();
string filePath = Server.MapPath("/detail");
if (Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
} filePath += "/" + cid + ".html";
StreamWriter sWriter = new StreamWriter(filePath, false, Encoding.Default);
sWriter.Write(contentStr);
sWriter.Flush();
sWriter.Close();

生成主页面:

直接点击前台的“生成主页”按钮,执行后台代码(如代码所示),将生成主页html。如果主页的内容发生变化,重新生成即可。下图代码中的参数需要根据实际情况修改。

          StringWriter sw = new StringWriter();
Server.Execute("index.html", sw);
string contentStr = sw.ToString();
string filePath = Server.MapPath("/");
filePath += "/index.html";
StreamWriter sWriter = new StreamWriter(filePath, false, Encoding.Default);
sWriter.Write(contentStr);
sWriter.Flush();
sWriter.Close();

  

      生成静态页面的另一种方法是:重写每个页面需要静态化的动态页面.cs文件的 Render()方法,如代码所示。该方法实现简单,但是每次访问该页面时,都会重新再次执行Render()方法,生成页面,性能较低。

       StringWriter sw = new StringWriter();
HtmlTextWriter tw= new HtmlTextWriter(sw);
base.Render(tw);
StreamWriter streamWriter = new StreamWriter(Server.MapPath("index.html"),false,Encoding.Default);
streamWriter.Write(sw.ToString());
streamWriter.Close();
tw.Close();
Response.Write(sw.ToString());

C#实现动态页面静态化的更多相关文章

  1. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  2. Asp.net动态页面静态化之初始NVelocity模板引擎

    Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...

  3. C#.NET动态页面静态化生成

    一,动态页面生成静态也的思路是怎样呢? 1>首先我们都是需要有一个静态模板,这模板的作用就是静态页的最基本模板,如下代码: <!DOCTYPE HTML PUBLIC "-//W ...

  4. php使用ob缓存来实现动态页面静态化

    php7中的php.ini 默认开启 output_buffering = 4096 例子: <?phpinclude_once 'common/common.php';//数据库操作方法 $f ...

  5. php页面静态化

    如何优化页面响应时间: 动态页面静态化 优化数据库 使用负载均衡 使用缓存 如果页面中的一些内容不经常改动,可以使用动态页面静态化.好处是:减少服务器脚本的计算时间:降低服务器的响应时间. 1.动态U ...

  6. PHP 实现页面静态化

    PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...

  7. filter应用案例四:页面静态化

    1 说明 你到"当当"搜索Java分类图书时,"当当"会去查询数据库!每天都有很多人去搜索"Java分类"的图书,每次都去访问数据库,这会有 ...

  8. JavaWeb笔记——利用过滤器实现页面静态化

    1.说明 页面静态化是把动态页面生成的html保存到服务器的文件上,然后再有相同请求时,不再去执行动态页面,而是直接给用户响应上次已经生成的静态页面. * 核心思路为拦截请求,实现请求转发指向静态页面 ...

  9. [转]PHP实现页面静态化的超简单方法

    为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态 ...

随机推荐

  1. C++重载覆盖隐藏

    写一个程序,各写出重载覆盖 1 // // main.cpp // 2013-7-17作业2 // // Created by 丁小未 on 13-7-17. // Copyright (c) 201 ...

  2. 遍历windows驱动

    驱动都存在 \\Driver 或者 \\FileSystem 目录对象里 我们只需要遍历这两个目录就可以遍历windows所有驱动 知识点 \\Driver  \\FileSystem (dt _OB ...

  3. Linux学习笔记(16)shell基础之Bash变量

    1. 用户自定义变量 (1)变量设置规则 ① 变量名称可由字母.数字和下划线组成,但不能以数字开头: ② 变量的默认类型为字符串类型,如果要对数值运算,则必须指定变量类型为数值型: ③ 变量用等号连接 ...

  4. ASP.Net MVC开发基础学习笔记(2):HtmlHelper与扩展方法

    一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归. ...

  5. node http 服务

    var http = require("http") http.createServer(function(req,res){ res.writeHead(200,{"C ...

  6. 【转】】Android ADB命令大全

    ADB很强大,记住一些ADB命令有助于提高工作效率. 获取序列号: adb get-serialno 查看连接计算机的设备: adb devices 重启机器: adb reboot 重启到bootl ...

  7. Rectangle(csu)

    Description Now ,there are some rectangles. The area of these rectangles is 1* x or 2 * x ,and now y ...

  8. AC自动机(二维) UVA 11019 Matrix Matcher

    题目传送门 题意:训练指南P218 分析:一行一行的插入,一行一行的匹配,当匹配成功时将对应子矩阵的左上角位置cnt[r][c]++;然后统计 cnt[r][c] == x 的数量 #include ...

  9. Android定位方式和测试方法

    Android常用的三种定位方式有:基于GPS定位.基于基站地位.基于wifi定位. 1.基于GPS定位: GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的. GPS定位最 ...

  10. FString的相关文档,另外还有4种LOG的方法

    https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/StringHandling/FString/index ...