ASP.NET生成静态方法

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();
        }

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

转载于:https://www.cnblogs.com/wzg0319/p/3672017.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值