码迷,mamicode.com
首页 > Web开发 > 详细

.net快速生成静态网页的方法一

时间:2015-01-31 11:52:16      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

一般用.net生成静态化网页方法有两种,一般是通过浏览器去触发动态的.aspx文件来达到解析网页,然后再生成网页,这种方法我们不用(因为这种方法需要浪费比较大的服务器性能,而且速度比较慢,一秒大概只能生成10个网页左右),所以我们今天要讲的是第二种方法,写一个网页模板,然后再用.net去解析标签,然后以完成这一个生成网页静态化功能(独占网络(http://www.sz886.com)-深圳网站建设-http://www.sz886.com技术人员测试过1秒可以生成100多个网页,性能非常好而且稳定,如果在开启多线程的情况,用户体验效果也非常好。)
?
首先我们生成网页化网页需要用到的技术就有I/O流的文件读写,然后我们再会用到正则表达式去解析标签,最多我们再用多线程去保证稳定还有速度。

首先我们建立一个叫duzhan.html(主文件),还有一个top.html(头部文件)
我们在头部文件里面写信息如下:
这是网页的头部文件,头部文件来源了深圳市独占网络科技有限公司(http://www.sz886.com)
然后我们写入duzhan.html(主文件)的代码是
<!doctype html>
<html>
<head>  
</head> 
//这是要解析的头文件,刚才是上面的我们写的Top.html文件
<!--include file="Top.html" /-->
//这是一个循环的解析标签,我们下面会用到,我们这里先写在这里
<!--list table="1" typeid="1"  num="10" where=" 1=1 " order="sortid asc,id asc" --> 
//这是一个判断的标签,我们这里也是先写在这里,下面会讲到  
<!--if testbase="@index@" testvalue="1" testmodel="=" --> 
<li><a href="@htmlpath@"><img rel="@imgpath@" src="@imgpath@"/></a></li>
<!--else-->
<li><a href="@htmlpath@"><img rel="@imgpath@" src=""/></a></li>
<!--/if-->   
<!--/list-->  
</body>
</html>
现在我们已经把两个网页的模板写好了,接下面我们就是要解析好我们写的标签,然后去生成它。
首先我们建一个CreateFile.cs文件来放置读写文件的方法。
//这是一个创建新静态页面信息,newsStrWebInfo是一个传入我们传入的参数(用于替换原有的信息)
public static string CreateSingleFile(string strModeFilePath)
{
//创建一个读文件信息的文件流
StreamReader strReader = null;
//查找出模块文件在服务器里面的路径,这里不用Server.MapPath,在多线程的时候会有问题
string FilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + strModeFilePath;
//怎样一个编号为Utf-8的信息
Encoding code = Encoding.GetEncoding("utf-8");
//创建一个strAllInfo字符串用于存放我们读取的信息
string strAllInfo = string.Empty;
try
{
 //得到一个读取的文件流,文件路径为FilePath,编码为code
 strReader = new StreamReader(FilePath, code);
//读取文件流里面的全部信息然后存放在strAllInfo里面去
strAllInfo = strReader.ReadToEnd();              
}
catch (Exception ex)
{
throw ex;
} finally
{  //关闭读取文件流
  strReader.Close();
}
 return strAllInfo;
}
 然后我们再写一个入的方法。
 public bool CreateWriteFile(string strNewsFilePath, string strFileinfo)
 {
   bool flag = false;
  //创建一个写文件信息的文件流
   StreamWriter strWrite = null;
  //怎样一个编号为Utf-8的信息
  Encoding code = Encoding.GetEncoding("utf-8");
  try
   {  //创建一个写入文件流
      strWrite = new StreamWriter(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + strNewsFilePath, false, code);
      //将刚才记取到的信息写入到文件流里面去
       strWrite.Write(strFileinfo);
       //创建成功就true
       flag = true;
      }catch (Exception ex)
      {
                throw ex;
      } finally
        {  strWrite.Flush();
           //关闭文件流
          strWrite.Close();
 }
  return flag;
}
 上面的定义了读取的模板还有生成模板的方法了,我们接下来就是建立一个解析标签的方法。
 我们就建立一个 DuZhanTag.cs文件
 我们建立一个生成网页的方法
 public void createDefault(string htmlpath, string filename)
 {
 //将我们刚才写的duzhan.html文件路径写进去然后读取到信息
 string html = CreateFile.CreateSingleFile(htmlpath);
 //如果读取的信息没有读取到信息我们就返回回去。
  if (string.IsNullOrEmpty(html))
 {  return; }
   //解析我们的标签,这个方法我们在下面定义。
    html=CreateIncludeHtml(strAllInfo);
   //生成文件
   new CreateFile().CreateWriteFile(filename, html);
}

由于网页放不下,所以我们把下面的方法写在 .net快速生成静态网页的方法二 http://www.sz886.com/zhishi/112110.html

.net快速生成静态网页的方法一

标签:

原文地址:http://www.cnblogs.com/sz886/p/4263770.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!