---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

这几日,同学问我怎样将动态页面直接生车静态的html页面,我想了想以前做过这个,今天把方法做个总结。

我所知道的生成静态页面的方法有两种,当然其他方法还有很多,我比较了解的是模板生成和地址映射。

第一种模板生成:模板生成其实就死定义一个静态的html模板,然后将里面的关键字替换掉。例如:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
  <title>$ShowArticle</title>
   <body>
biaoti
<br>
$content<br>
author
</body>
</HTML>
$biaoti
<br>
$content<br>
$author
</body>
</HTML>

然后用字符替换将关键字替换成动态的内容,输出html文件,这种方法灵活度太差,如果一个站点的网页形式千变万化,增删改查特别频繁,那么这种方法就显得无能为力了。

第二种方法地址映射,这种方法就把以上的缺点全都克服掉了。直接输入地址 生成静态。生成的静态 页面和动态页面一模一样。

代码:

public static string ExecAspxToHtml(string Url, string Path, string FileName)//参数:动态页面的地址,生成静态html的地址,html文件的名字
{
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, false, System.Text.Encoding.GetEncoding("GB2312"));
//新建一个文件Test.htm,文件格式为GB2312
sw.Write(strHTML.ToString()); //将strHTML中的字符写到Test.htm中
strHTML.Close(); //关闭StringWriter
sw.Close(); //关闭StreamWriter
return "生成成功";
}
catch (Exception ex)
{
return ex.ToString();

}
}

调用此方法

if (File.Exists(Server.MapPath("../") + "chanpin.aspx"))
{

tohtml.ExecAspxToHtml("../chanpin.aspx", Server.MapPath("../"), "chanpin.html");

}

就是这样就会自动生成静态页面html,方便吧,但是这种方法再用的时候一定要注意生成静态html后的链接,因为当你生成html后它原来的链接都是.aspx页面而现在都变成了html页面,所以还要在生成静态的时候过滤一下链接:

private string ReplaceStr(Match m)
{
return m.Value + ".html";
}

StreamReader sr = new StreamReader(Server.MapPath("../chanpin.html"), code);

string html = sr.ReadToEnd();

html = html.Replace("cp_read.aspx?cpid=", "cpread/cp_read");

Regex reg = new Regex(@"(?is)(?<=<a\s?href[^>].*?)cpread/cp_read[\d]+");
html = reg.Replace(html, ReplaceStr);
sr.Dispose();
sr.Close();
StreamWriter sw = new StreamWriter(Server.MapPath("../chanpin.html"), false, code);

sw.Write(html);
sw.Flush();
sw.Close();

好就是这样差不多就完成了,可能还会遇到其他问题,想办法自己解决吧。

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

转载于:https://www.cnblogs.com/weiwin/archive/2012/06/30/2570856.html

黑马程序员——生成html静态页面,方便seo,加快加载速度相关推荐

  1. 如何优化网站页面提高网页的加载速度

    网站要想加载快无非就是减少http请求次数,下面说一下具体做法: 1:字符集声明 如果<head>部分未定义字符集,将增加页面渲染次数,速度减慢. 2:Meta信息完善程度 建议网站met ...

  2. SPA单页面应用首屏加载速度提升方法

    SPA单页面应用首屏加载速度提升方法 首屏加载 计算首屏加载时间公式 解决方法 减少入口文件体积 静态资源本地缓存 UI框架按需加载 避免组件重复打包 图片资源压缩 开启GZip压缩 首屏加载 首屏加 ...

  3. 黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入

    ------- android培训.java培训.期待与您交流! ---------- 黑马程序员-----集合框架类(四) 高级for循环.方法的可变参数及静态导入 1.1 高级for循环(示例1) ...

  4. 黑马程序员前端-CSS练手之学成在线页面制作

    前端学习笔记教程不定期更新中,传送门: 前端HTML第一天:什么是网页?什么是HTML?网页怎么形成? 黑马程序员前端-CSS入门总结 黑马程序员前端-CSS之emmet语法 黑马程序员前端-CSS的 ...

  5. 黑马程序员云道页面—巩固html和css(新特性没有使用)

    注意: 一.写的是黑马程序员跟着老师写的,有点小差别,主要看注释理解结构 二.以前学thml和css没有深入理解到盒子的坍塌问题,注意理解外边距的合并.有两种情况,一个是两个盒子紧挨着一起,会进行外边 ...

  6. 黑马程序员C++笔记

    C++ 课程链接: 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 一.C++基础语法 1.变量和常量数据 1.1第一个C++程序 编写一个C++程序总共分 ...

  7. [学习笔记]黑马程序员-Hadoop入门视频教程

    文章目录 参考资料 第一章:大数据导论与Linux基础(p1-p17) 1.1 大数据导论 1.1.1 企业数据分析方向 1.1.2 数据分析基本流程步骤 明确分析的目的和思路 数据收集 数据处理 数 ...

  8. 2023年黑马程序员Java学习路线图

    2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...

  9. 跟着黑马程序员pink老师学习的笔记及小破站学习的笔记

    网页 1.网站是指在因特网上根据一定的规则,使用HTML等制作的用于展示特定内容相关的网页集合 2.什么是网页? 网页是网站中的一"页",通常是HTML格式的文件,它要通过浏览器来 ...

最新文章

  1. 监控web站点目录下所有文件是否被恶意篡改
  2. 2019年4月8日 1021. Remove Outermost Parentheses
  3. visualSVN下载与安装
  4. .net core自定义高性能的Web API服务网关
  5. webviewjavascriptbridge android ios,js与ios交互使用WebViewJavascriptBridge如何写多个函数
  6. adb push命令传文件到手机_Android调试桥(adb)
  7. 微信昵称可以加特效啦!
  8. 钉钉实现企业级微应用免登陆详解
  9. 详解Spring中@Autowire,@Value 注解实现原理
  10. 9 大技巧拯救你的编程面试!
  11. Android UI 事件研究
  12. 非法使用java_java中的非法远程方法
  13. vbs程序批量禁用域用户然后移动到指定OU
  14. 数学建模第七章 数理统计
  15. 2020-04-06
  16. 小说阅读,原生小说APP源码出售,可二次开发 四端互通:android端,ios端,h5端,公众号端
  17. 8类网线利弊_浅析网线8芯线各自的作用
  18. 亚马逊测评日记: 亚马逊自养号是什么意思?测评的风险?review和feedback、rating星级评分的区别?
  19. 你知道什么是嵌入式技术吗?
  20. 50个漂亮的页面导航设计

热门文章

  1. 稀疏傅里叶变换(sparse FFT)
  2. 恐怖小说之王——斯蒂芬·金 (转贴)
  3. Java入门:冒泡排序
  4. multi-byte wide-char
  5. 从Linux到Meego
  6. pgsql vs mysql查询_对比平台--SQL Server Vs PostgreSQL
  7. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)...
  8. 对TypeScript进行研究
  9. 阿里Sentinel控制台源码修改-对接Apollo规则持久化
  10. 【FBI WARNING】一些Noip的黑科技 持续整理!