CMS系统如果新闻多了,全部生成静态的话。不现实,而且占用空间比较大。那么只生成网站首页是必须的了,下面列出JCMS首页生成静态的方法。换一种思路其实更简单。

当点击生成首页静态的时候。去获取动态首页的源代码,然后在网站根目录生成一个index.htm的文件为静态首页就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected void Button2_Click(object sender, EventArgs e)
       {
           string asd = GetHtml(""+new JCMS.BLL.Jcms_sysconfig().GetModelByCache(1).Doname+"/index.aspx", "utf-8");
           FileStream fs= File.Create(Server.MapPath("~/index.htm"));
              
   
           StreamWriter sw = new StreamWriter(fs,Encoding.UTF8);
           sw.Write(asd);
              
           sw.Close();
           fs.Close();
           Response.Write("<script>alert('操作完成!');location.href='" + Request.Url.AbsoluteUri + "'</script>");
   
       }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/// <summary>
       /// 根据提供的地址和编码下载网页。
       /// </summary>
       /// <param name="url">url是要访问的网站地址</param>
       /// <param name="charSet">charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码</param>
       /// <returns></returns>
       public static string GetHtml(string url, string charSet)
       {
           string strResult = string.Empty;
           try
           {
               HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
               //request.Timeout = 0x9c40;
               request.Timeout = 60000;
               request.Headers.Set("Pragma", "no-cache");
               Stream streamReceive = ((HttpWebResponse)request.GetResponse()).GetResponseStream();
               Encoding encoding = Encoding.Default;
               if (!string.IsNullOrEmpty(charSet) && Encoding.GetEncoding(charSet) != Encoding.Default)
                   encoding = Encoding.GetEncoding(charSet);
               strResult = new StreamReader(streamReceive, encoding).ReadToEnd();
           }
           catch (Exception ex)
           {
               //Global.LogInfo = "未能获取服务器数据,请稍候再试!" + ex.Message;
           }
           return strResult;
       }
   
   
       /// <summary>
       /// 
       /// </summary>
       /// <param name="url"></param>
       /// <param name="SavaPath"></param>
       public static void SavaWebFile(string url, string SavaPath)
       {
           //指针的位置
           long lStartPos = 0;
           int READ_SIZE = 8 * 1024;
           FileStream fs;
           if (File.Exists(SavaPath))
           {
               fs = File.OpenWrite(SavaPath);
               lStartPos = fs.Length;
               fs.Seek(lStartPos, SeekOrigin.Current);
           }
           else
           {
               fs = new FileStream(SavaPath, FileMode.OpenOrCreate, FileAccess.Write);
           }
           //打开网络连接
           HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
           HttpWebResponse myHttpWebResponse = null;
           if (lStartPos > 0)
           {
               request.AddRange((int)lStartPos);//设置Range值 
           }
           try
           {
               myHttpWebResponse = (HttpWebResponse)request.GetResponse();
           }
           catch (WebException e)
           {
               if (fs != null)
                   fs.Close();
               if (myHttpWebResponse != null)
                   myHttpWebResponse.Close();
               //Global.LogInfo = "未能获取服务器数据,请稍候再试!" + e.Message;
           }
           //向服务器请求,获得服务器回应数据流 
           Stream strm = myHttpWebResponse.GetResponseStream();
           //开始下载。
           byte[] buffer = new byte[READ_SIZE];
           int bufferSize = buffer.Length;
           int readCount = READ_SIZE;
           while (readCount > 0)
           {
               readCount = strm.Read(buffer, 0, bufferSize);
               if (0 == readCount)
               {
                   break;
               }
               fs.Write(buffer, 0, readCount);
           }
           fs.Close();
           myHttpWebResponse.Close();
           strm.Close();
       }

这样生成后。看看网站打开是不是飞快了?

ASP.NET生成静态方法的更多相关文章

  1. ASP.NET生成WORD文档,服务器部署注意事项

    网上转的,留查备用,我服务器装的office2007所以修改的是Microsoft Office word97 - 2003 文档这一个. ASP.NET生成WORD文档服务器部署注意事项 1.Asp ...

  2. asp.net生成PDF文件 (1)

    asp.net生成PDF文件 (1) 这个是例子是网上淘来的,哈哈,很有用的! 首先要到网上下载itextsharp.dll,然后添加引用,主程序如下: 1 2 3 4 5 6 7 8 9 10 11 ...

  3. asp.net生成二维码的方法

    asp.net生成二维码的方法 [复制链接]     这个要利用一个Dll文件. 如下 Gma.QrCodeNet.Encoding.dll (105.5 KB, 下载次数: 27) 当然大家也可以直 ...

  4. asp.net生成RSS

    经常看到博客.还有很多网站中有RSS订阅,今天就来玩玩asp.net生成RSS,在网上查找了相关资料 发现just soso,如下: aspx <?xml version="1.0&q ...

  5. asp.net 生成、解析条形码和二维码

    原文 asp.net 生成.解析条形码和二维码 一.条形码 一维码,俗称条形码,广泛的用于电子工业等行业.比如我们常见的书籍背面就会有条形码,通过扫描枪等设备扫描就可以获得书籍的ISBN(Intern ...

  6. asp.net 生成xml文件 与 asp生成xml文件

    一.asp.net 生成xml文件 webservice方式,调用接口: public XmlDocument List() { XmlDocument doc = new XmlDocument() ...

  7. Asp.net 生成静态页面

    http://www.cnblogs.com/tonycall/archive/2009/07/18/1526079.html Asp.net 生成静态页面(简单用法) 第一次发表,有什么错误,请大家 ...

  8. asp.net生成word文档服务器配置

    一.asp.net生成word文档,布署到正式的服务器上就出现           错误:System.Runtime.InteropServices.COMException (0x800A1098 ...

  9. asp.net生成店铺推广二维码,二维码中间加logo(源码)

    二维条码比一维条码记载数据量更多,二维码条码是一种高密度.高信息含量的便携式数据文件,是实现证件及卡片等大容量.高可靠性信息自动存储.携带并可用机器自动识读的理想手段.而且可以记载更复杂的数据,比如图 ...

随机推荐

  1. C# 编码转换 UTF8转GB2312 GB2312转UTF8

    /// <summary> /// GB2312转换成UTF8 /// </summary> /// <param name="text">&l ...

  2. C++读取文件夹中所有的文件或者是特定后缀的文件

    由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...

  3. Linux学习笔记(1)Linux虚拟机安装过程中的知识点及常用管理工具

    1. VMware的相关知识 (1)建议的VMware的配置: CPU 主频1GHz以上 内存 1GB以上 硬盘 分区空闲空间8GB以上 (2)VMware创建快照 快照的作用是保存虚拟机的现有状态, ...

  4. 开发Portlet第二步:如何将Crystal静态Portlet转变成基于测试数据的动态Portlet?

    当基于Crystal的静态Portlet开发完成后,在与后台服务联调前,还需要将Portlet转换成基于测试数据的动态Portlet.具体步骤如下: 分步指南 复制Portlet项目,并修改相关的po ...

  5. Ubuntu中如何打开终端terminal

    法一 先按住Alt,然后再按F2,出来一个运行框,在里面输入gnome-terminal即可 [编辑]法二 如果想从右键菜单中打开终端,需要安装一个软件: sudoapt-get install na ...

  6. ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步

    一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...

  7. 常用eclipse 快捷键

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...

  8. DOM--2 创建可重用的对象

    对象中包含的 分类(内置对象: 注意这些都是function:除了Function对象,实例都是object) Function对象 Function实例function 构造函数的function ...

  9. BZOJ 3542 [Poi2014]Couriers ——可持久化线段树

    [题目分析] 查找区间内出现次数大于一半的数字. 直接用主席树,线段树上维护区间大小,由于要求出现次数大于一半,每到一个节点可以分治下去. 时间复杂度(N+Q)logN [代码] #include & ...

  10. PHP public private protected 三种修饰符的区别

    public 表示全局,类内部外部子类都可以访问:private表示私有的,只有本类内部可以使用:protected表示受保护的,只有本类或子类或父类中可以访问: