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.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态 ...
随机推荐
- php mysql PDO基本操作
<?php $dbh = new PDO('mysql:host=localhost;dbname=localhost', 'root', ''); $dbh->setAttribute( ...
- oracle本机登录不上dba的权限不足错误
说明:因遇到“sqlplus / as sysdba”登录oracle时遇到权限不足(ora-01031)错误:百度到以下资料,原文链接: http://www.xifenfei.com/2011/1 ...
- 汇编学习(一)——win7 64位调出debug
一.安装方法: 1.下载一个dosbox和win7 32位debug.exe,安装dosbox,打开页面 2. 将debug.exe放入磁盘根目录,这里以D盘为例.在dosbox中输入mount c ...
- currentStyle
用js的style属性可以获得html标签的样式,但是不能获取非行间样式. 解决方法: 在IE下可以用currentStyle; 在FF下用getComputedStyle; 然而,为了让其兼容,解决 ...
- ThinkPHP去重 distinct和group by
转自:http://blog.csdn.net/helencoder/article/details/50328629 近期项目中,遇到数据表去重要求,对于ThinkPHP的去重有了更加准确的认识和体 ...
- ++i与i++的区别
1. ++i 和 i++,在单独使用时,就是 i=i+1. 2. a = ++i,相当于 i=i+1; a = i; (先i = i + 1,再使用i的值).也可以写成 i++; a=i 3. a = ...
- Swift3.0语言教程组合字符串
Swift3.0语言教程组合字符串 Swift3.0语言教程组合字符串,当开发者想要将已经存在的字符串进行组合,形成一个新的字符串,可以使用NSString中的两个方法,分别为appending(_: ...
- 02_Java语言基础部分【总结】
1. 数据的输入/输出 标准输入输出流 字符输入: char c = (char)System.in.read(); 字符串输入: BufferedReader buf = new BufferedR ...
- [bzoj4424]Fairy
很久之前想写这题.结果还是把握不住CF的E,太神了啊....... 首先考虑的是二分图的性质,这个so easy,图中不存在奇数环. 然后分三种情况考虑: 1.只有一个奇数环,随便删除哪条 2.多个奇 ...
- 5分钟弄懂Docker--转载
编者按:7月3日的“CSDN在线培训:Docker之道”,同时在线人数达到了历史新高,但是最后的QA环节,笔者发现大家的问题 还是很初级的,Docker技术还处在Gartner技术曲线的萌芽期.刚好前 ...