如果你的网站有生成静态页面的必要(个人认为如果能合理缓存定态页面性能应该比使用静态页高^_^),可以参考以下两种方案.
方案1:使用模版页关键字替换
以下是核心代码:
usingSystem;
usingSystem.Text;
usingSystem.IO;
usingSystem.Text.RegularExpressions;
usingSystem.Collections.Specialized;
///<summary>
///根据模板页生成静态页
///</summary>
publicclassStaticHtml
{
//用来存放要替换的动态数据
staticStringDictionary_data;
///<summary>
///使用动态数据替换模板内的标签
///</summary>
///<paramname="tmplatehtml"></param>
///<paramname="articleinfo"></param>
///<returns></returns>
publicstaticstringGetHtml(stringtmplatehtml,StringDictionaryarticleinfo)
{
_data=articleinfo;
//替换内容
stringresltstring;
///使用正则表达式替换捕获模板内所有标签,替换之
resltstring=Regex.Replace(tmplatehtml,"{//$(.*?)//$}",ReplaceTaget,RegexOptions.Multiline);
/*
//如果需要写文件,可参照
stringhtmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
StreamWritersw=newStreamWriter(path+htmlfilename,false,Encoding.UTF8);
sw.Write(resltstring);
sw.Flush();
sw.Close();
*/
returnresltstring;
}
//将单个标签替换成动态数据
staticstringReplaceTaget(Matchtaget)
{
if(taget.Length>4)
{
stringtag=taget.Value.Substring(0,taget.Value.Length-2);
tag=tag.Substring(2,tag.Length-2);
///如果动态数据中包含指定数据,则将标签替换为动态数据,否则则返标签名
return(_data[tag]==null)?tag:_data[tag].ToString();
}
else
returntaget.Value;
}
}
方案2:模拟请求动态页面,获取其输出的html,保存为静态页面。
以下是核心代码:
usingSystem;
usingSystem.Data;
usingSystem.Web;
usingSystem.Net;
usingSystem.IO;
usingSystem.Text;
///<summary>
///StaticHtml2的摘要说明
///</summary>
publicclassStaticHtml2
{
publicstaticstringGetHtml(stringUrl)
{
///定义一个System.Net.WebRequest对象
WebRequestwReq=WebRequest.Create(Url);
//WebRequest请求指定url,返回WebResponse实例
WebResponsewResp=wReq.GetResponse();
//过去WebResponse里的数据流
StreamrespStream=wResp.GetResponseStream();
//定义一个StreamReader读取Response数据流里的信息
StreamReaderreader=newStreamReader(respStream,Encoding.GetEncoding("gb2312"));
stringresult=reader.ReadToEnd();
/*
//如果需要写文件,可参照
stringhtmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
StreamWritersw=newStreamWriter(path+htmlfilename,false,Encoding.UTF8);
sw.Write(result);
sw.Flush();
sw.Close();
*/
returnresult;
}
}
测试代码:
default.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"Debug="true"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>无标题页</title>
</head>
<body>
<formid="form1"runat="server">
<div>
模版内容<br/>
<asp:TextBoxID="temp"runat="server"BackColor="Gainsboro"BorderColor="LightSeaGreen"
BorderWidth="1px"Height="100px"TextMode="MultiLine"Width="100%"></asp:TextBox>
处理后的内容<br/>
<asp:TextBoxID="replaceed"runat="server"BackColor="Gainsboro"BorderColor="LightSeaGreen"
BorderWidth="1px"Height="100px"TextMode="MultiLine"Width="100%"></asp:TextBox></div>
</form>
</body>
</html>
Default.aspx.cs
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclass_Default:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
/*
//对指定地址请求方式,将动态页面生成静态
Response.Write(StaticHtml2.GetHtml("http://www.sohu.com"));
Response.End();
*/
stringtemplate="<html><title>{$title$}</title><body>{$title$}<br/>作者:{$author$}<br/>{$content$}</body></html>";
temp.Text=template;
System.Collections.Specialized.StringDictionarydic=newSystem.Collections.Specialized.StringDictionary();
dic.Add("title","测试标题");
dic.Add("author","测试作者");
dic.Add("content","测试内容");
stringresult=StaticHtml.GetHtml(template,dic);
replaceed.Text=result;
}
}
以上代码经本人测试可以正常工作,但实际应用还需根据特定需要改进并完善。祝你编码愉快~
相关推荐
智恒企业网站管理系统集电脑网站、手机网站、微信于一体,共用空间,数据自动同步,是国内三站合一优秀解决方案。 系统采用PHP进行开发,它具有操作简单、功能强大、稳定性好、易扩展、安全性强、后期维护方便等...
本课程全程使用目前比较流行的开发工具idea进行开发,涉及到目前互联网项目中最常用的高并发解决方案技术, 如 dubbo,redis,solr,freemarker,activeMQ,springBoot框架,微信支付,nginx负载均衡,电商活动秒杀,spring...
代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。 ...
2009-02-26 16:33 177152 37861 常见的专业问题解决办法\网页常用的jsp 脚本.doc 2009-03-20 16:37 254350 86752 常见的专业问题解决办法\解决Struts中ApplicationResources_properties文件不支持中文问题_微科工作...
BEES采用模块化方式开发,功能强大灵活易于扩展,并且完全开放源代码,多种语言分站,为企业网站建设和外贸提供解决方案。 主要特性: 1、支持多种语言 BEES支持多种语言,后台添加自动生成,可为每种语言分配网站...
15.5 常见问题与解决方案 259 15.6 小结 261 第16章 数据库中的程序逻辑 262 16.1 数据库程序逻辑与PHP程序逻辑的分体 16.1 设计原则 262 16.2 数据库中的程序逻辑与数据的关系 262 16.3 存储过程的设计 263 16.3.1 ...
支持动态、伪静态、管理员后台手动生成全站静态、访问者点击触发式生成静态页面。 功能与特征 功能概述 miceCMS是一个采用觅策软件自主开发的MiceFrame框架(为适应企业级网站建设需求而研发的建站框架)构建的...
4、搜索引擎优化结构:自定义栏目目录名形式、更简洁易读的模块代码、自定义标题/描述/关键字、站内关键字策略、全静态网站地图、全站生成静态Html页面等一系列优化、功能让您的学校网站占尽搜索引擎优化优势。...
功能点 站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态页面生成(新浪、搜狐等大型网站普遍采用的技术)、文章管理、无刷新评论、评论的无刷新分页、敏感词过滤、用户管理、友情链接管理、...
采用MVC设计模式,实现业务逻辑与表现层的适当分离,使网页设计师能够轻松设计出理想的模板,能比以往任何时候都更快地构建高品质的网站解决方案。 通过miceCMS企业网站管理系统,企业建站者可以轻松构建一个企业...
优化了多级分类的结构,增加了全站生成静态页面,负载和SEO方面都全面加强;内置了采集接口(Beta),以后还会增加对其它外部采集器的支持;前后端界面也全面重构,更加简洁,规范和易用。开放全部源代码,并保留所有注释,...
考虑您有一个静态生成的网站-一堆常用资源,包括html文件。 为了方便起见,您可以使用开发Web服务器在本地测试此站点,并且一切正常。 您设置了一个私有S3存储桶以及一个经授权可以访问该存储桶以在您的域中公开站点...
一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui.webcontrols的TabStrip与...
通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。 ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer???? ...
BizIdea是动易公司自主研发的新一代企业电子商务管理系统,是一套专门面向大中型企业级电子商务平台构建与管理的解决方案,拥有全套的企业电子商务支持工具:从站点构建到商品陈列、库存管理,从订单协同处理到在线...
不会像生成静态网页那样产生大量垃圾文件占用空间。 采用防止外部提交和防刷新机制,有效防止各种攻击行为。 在线制作略图功能,让图片显示更快。 图片添加水印文字,防止盗图。 详细介绍可传附件,方便供...
不会像生成静态网页那样产生大量垃圾文件占用空间。 采用防止外部提交和防刷新机制,有效防止各种攻击行为。 在线制作略图功能,让图片显示更快。 图片添加水印文字,防止盗图。 详细介绍可传附件,方便供...