`
webcode
  • 浏览: 5939894 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

常用生成静态页面解决方案

 
阅读更多

常用生成静态页面解决方案

2007年01月27日 星期六 11:11

如果你的网站有生成静态页面的必要(个人认为如果能合理缓存定态页面性能应该比使用静态页高^_^),可以参考以下两种方案.

方案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;

}
}

以上代码经本人测试可以正常工作,但实际应用还需根据特定需要改进并完善。祝你编码愉快~

分享到:
评论

相关推荐

    智恒网络三合一建站源码 v6.7.zip

    智恒企业网站管理系统集电脑网站、手机网站、微信于一体,共用空间,数据自动同步,是国内三站合一优秀解决方案。 系统采用PHP进行开发,它具有操作简单、功能强大、稳定性好、易扩展、安全性强、后期维护方便等...

    2小时快速上手Freemarker电商项目商品详情页静态化

    本课程全程使用目前比较流行的开发工具idea进行开发,涉及到目前互联网项目中最常用的高并发解决方案技术, 如  dubbo,redis,solr,freemarker,activeMQ,springBoot框架,微信支付,nginx负载均衡,电商活动秒杀,spring...

    ASP.NET的网页代码模型及生命周期

    代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。 ...

    收集的常见的专业问题解决办法.rar

    2009-02-26 16:33 177152 37861 常见的专业问题解决办法\网页常用的jsp 脚本.doc 2009-03-20 16:37 254350 86752 常见的专业问题解决办法\解决Struts中ApplicationResources_properties文件不支持中文问题_微科工作...

    bees企业网站管理系统 1.9

    BEES采用模块化方式开发,功能强大灵活易于扩展,并且完全开放源代码,多种语言分站,为企业网站建设和外贸提供解决方案。 主要特性: 1、支持多种语言 BEES支持多种语言,后台添加自动生成,可为每种语言分配网站...

    php网络开发完全手册

    15.5 常见问题与解决方案 259 15.6 小结 261 第16章 数据库中的程序逻辑 262 16.1 数据库程序逻辑与PHP程序逻辑的分体 16.1 设计原则 262 16.2 数据库中的程序逻辑与数据的关系 262 16.3 存储过程的设计 263 16.3.1 ...

    miceCMS觅策企业网站管理系统 5.0.zip

    支持动态、伪静态、管理员后台手动生成全站静态、访问者点击触发式生成静态页面。 功能与特征 功能概述 miceCMS是一个采用觅策软件自主开发的MiceFrame框架(为适应企业级网站建设需求而研发的建站框架)构建的...

    千博学校网站管理系统 v2019 Build0116.zip

    4、搜索引擎优化结构:自定义栏目目录名形式、更简洁易读的模块代码、自定义标题/描述/关键字、站内关键字策略、全静态网站地图、全站生成静态Html页面等一系列优化、功能让您的学校网站占尽搜索引擎优化优势。...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    功能点 站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态页面生成(新浪、搜狐等大型网站普遍采用的技术)、文章管理、无刷新评论、评论的无刷新分页、敏感词过滤、用户管理、友情链接管理、...

    miceCMS觅策企业网站管理系统 v5.0.rar

    采用MVC设计模式,实现业务逻辑与表现层的适当分离,使网页设计师能够轻松设计出理想的模板,能比以往任何时候都更快地构建高品质的网站解决方案。  通过miceCMS企业网站管理系统,企业建站者可以轻松构建一个企业...

    PIC CMS图片网站管理系统 v1.2.ZIP

    优化了多级分类的结构,增加了全站生成静态页面,负载和SEO方面都全面加强;内置了采集接口(Beta),以后还会增加对其它外部采集器的支持;前后端界面也全面重构,更加简洁,规范和易用。开放全部源代码,并保留所有注释,...

    cloudfront-autoindex:AWS Lambda解决index.html S3CloudFront混乱

    考虑您有一个静态生成的网站-一堆常用资源,包括html文件。 为了方便起见,您可以使用开发Web服务器在本地测试此站点,并且一切正常。 您设置了一个私有S3存储桶以及一个经授权可以访问该存储桶以在您的域中公开站点...

    asp.net知识库

    一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui.webcontrols的TabStrip与...

    HttpClient以及获取页面内容应用

    通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。 ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer???? ...

    动易BizIdea v3.6.rar

    BizIdea是动易公司自主研发的新一代企业电子商务管理系统,是一套专门面向大中型企业级电子商务平台构建与管理的解决方案,拥有全套的企业电子商务支持工具:从站点构建到商品陈列、库存管理,从订单协同处理到在线...

    LED装饰公司网站 v1.0.zip

    不会像生成静态网页那样产生大量垃圾文件占用空间。 采用防止外部提交和防刷新机制,有效防止各种攻击行为。 在线制作略图功能,让图片显示更快。 图片添加水印文字,防止盗图。 详细介绍可传附件,方便供...

    工商注册代理公司网站 v1.0.zip

    不会像生成静态网页那样产生大量垃圾文件占用空间。 采用防止外部提交和防刷新机制,有效防止各种攻击行为。 在线制作略图功能,让图片显示更快。 图片添加水印文字,防止盗图。 详细介绍可传附件,方便供...

Global site tag (gtag.js) - Google Analytics