C#实现动态页面静态化
制作一个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#实现动态页面静态化的更多相关文章
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- Asp.net动态页面静态化之初始NVelocity模板引擎
Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...
- C#.NET动态页面静态化生成
一,动态页面生成静态也的思路是怎样呢? 1>首先我们都是需要有一个静态模板,这模板的作用就是静态页的最基本模板,如下代码: <!DOCTYPE HTML PUBLIC "-//W ...
- php使用ob缓存来实现动态页面静态化
php7中的php.ini 默认开启 output_buffering = 4096 例子: <?phpinclude_once 'common/common.php';//数据库操作方法 $f ...
- php页面静态化
如何优化页面响应时间: 动态页面静态化 优化数据库 使用负载均衡 使用缓存 如果页面中的一些内容不经常改动,可以使用动态页面静态化.好处是:减少服务器脚本的计算时间:降低服务器的响应时间. 1.动态U ...
- PHP 实现页面静态化
PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...
- filter应用案例四:页面静态化
1 说明 你到"当当"搜索Java分类图书时,"当当"会去查询数据库!每天都有很多人去搜索"Java分类"的图书,每次都去访问数据库,这会有 ...
- JavaWeb笔记——利用过滤器实现页面静态化
1.说明 页面静态化是把动态页面生成的html保存到服务器的文件上,然后再有相同请求时,不再去执行动态页面,而是直接给用户响应上次已经生成的静态页面. * 核心思路为拦截请求,实现请求转发指向静态页面 ...
- [转]PHP实现页面静态化的超简单方法
为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态 ...
随机推荐
- ASP.NET多线程下使用HttpContext.Current为null解决方案 2015-01-22 15:23 349人阅读 评论(0) 收藏
问题一:多线程下获取文件绝对路径 当我们使用HttpContext.Current.Server.MapPath(strPath)获取绝对路径时HttpContext.Current为null,解决办 ...
- Oracle 【IT实验室】数据库备份与恢复之一:exp/imp(导出与导入&装库与卸库)
1.1 基本命令 1. 获取帮助 $ exp help=y $ imp help=y 2. 三种工作方式 (1)交互式方式 $ exp // 然后按提示输入所需要的参数 ...
- PMP 第三章 单个项目的项目管理标准
1 项目管理五大过程组分别是什么? 启动过程组 规划过程组 执行过程组 监控过程组 收尾过程组 2 启动项目组是干什么?包含哪些过程?每个阶段都需要启动吗? 启动过程组:获得授权,定义一个新项目或现有 ...
- apache服务器安装
下载地址:http://www.apachehaus.com/cgi-bin/download.plx 全程按这篇来的,很顺利 http://www.cnblogs.com/yerenyuan/p/5 ...
- loadrunner实现字符串的替换
char *replace_str(char *str, char *orig, char *rep) { static char buffer[9096]; char *p; i ...
- loadrunner统计字符串中指定字符出现的次数
Action() { char *str="sdfas1,sdfsdf2,sdfsdfsdfdsf3,sdfsdfsdfsdfds4,fsdfdsf5,sdfdsfsd6,fsdfsd7sd ...
- css之overflow
也说css之overflow:细探之下有意想不到的结果 2016-11-5 滴滴出行·DDFE 作者:dolymood overflow 是一个非常常用的 CSS 属性,一般来说会认为很简单,其实细究 ...
- js-变量、作用域和内存问题,引用类型
变量.作用域和内存问题 1.变量可能包含两种不同数据类型的值:基本类型值以及引用类型值:引用类型值保存的是内存中的对象 2.对象是按值传递的, function setName(obj){ obj.n ...
- 【CRL in c#】常量与字段
1.常量(constant) 1, 常量是一个从不变化的值.只有在确定一个符号的值从不变化时使用. 2, 只能为基元类型定义常量(Boolean,Char,Byte,Int32……),非基元类型定 ...
- [SDOI2016]部分题选做
听说SDOI蛮简单的,但是SD蛮强的.. 之所以是选做,是因为自己某些知识水平还不到位,而且目前联赛在即,不好花时间去学sa啊之类的.. bzoj4513储能表&bzoj4514数字配对 已写 ...