ASP.NET页面启用gzip压缩

using System;
using System.IO.Compression;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Headers["Accept-Encoding"].ToLower().IndexOf("gzip") != -1)
        {
            Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress);
            Response.AppendHeader("Content-Encoding", "gzip");//不设置浏览器显示为乱码
        }

        Response.WriteFile(Server.MapPath("book.txt"));
    }
}

启用gzip压缩前后对比:



大多数浏览器自带了gzip解压功能,经gzip压缩后的页面不需做格外的操作就能正常显示了。但url若做为接口使用,在应用程序中获取返回内容时,则需手工进行解压,示例代码:
using System;
using System.IO;
using System.IO.Compression;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //请求
            WebRequest Request = WebRequest.Create("http://localhost:2440/Default.aspx");
            Request.ContentType = "application/x-www-form-urlencoded";
            Request.Method = "GET";

            //响应
            WebResponse Response = Request.GetResponse();
            Stream stream = Response.GetResponseStream();

            //解压
            byte[] buffer = new byte[100];
            int length = 0;
            using (GZipStream gz = new GZipStream(stream, CompressionMode.Decompress))
            {
                using (MemoryStream msTemp = new MemoryStream())
                {
                    while ((length = gz.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        msTemp.Write(buffer, 0, length);
                    }

                    Console.WriteLine(System.Text.Encoding.UTF8.GetString(msTemp.ToArray()));
                }

            }

            Console.ReadKey();
        }
    }
}


顺便检测了下各大门户站,都启用了gzip压缩,下边为www.qq.com检测信息:


上一篇: GZipStream压缩/解压字符串(C#)
下一篇: Js控制gif图片播放
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 12810
发表评论
登录后再发表评论!