ASP.NET頁面壓縮 Compression Gzip Deflate
来源:互联网 发布:泰晤士河报软件 编辑:程序博客网 时间:2024/06/11 20:09
稍微研究了一下頁面壓縮...
壓縮後的頁面空間變小,可以稍微的降低網頁的流量,提昇傳輸的速度...
廢話不多說 來看程式囉
- using System;
- using System.IO;
- using System.IO.Compression;
- using System.Web;
- namespace Library.framework
- {
- /// <!--HTTP壓縮輸出-->
- /// <summary>
- /// HTTP壓縮輸出 - design By Phoenix 2008 -
- /// </summary>
- /// Update:2008.09.08
- /// Developer:Phoenix
- /// Version:1.0.0918
- public class HttpCompression:IHttpModule
- {
- #region IHttpModule 成員
- void IHttpModule.Dispose()
- {
- //Dispose
- }
- void IHttpModule.Init(HttpApplication context)
- {
- //加入壓縮事件
- context.BeginRequest += new EventHandler(context_BeginRequest);
- }
- #endregion
- void context_BeginRequest(object sender, EventArgs e)
- {
- //提取Application
- HttpApplication app = (HttpApplication)sender;
- //判斷是否為*.axd (此檔不可壓縮)
- if (app.Request.Path.Contains("axd"))
- return;
- //提取支援的壓縮格式
- string encodiongs = app.Request.Headers.Get("Accept-Encoding");
- //判斷是否支援壓縮
- if (string.IsNullOrEmpty(encodiongs))
- {
- app.Context.Items["Compression"] = "Compression disabled";
- return;
- }
- //提取輸出資料流
- Stream Filter = app.Response.Filter;
- //將壓縮格式轉小寫
- encodiongs = encodiongs.ToLower();
- //判斷是否支援Gzip
- if (encodiongs.Contains("gzip"))
- {
- //將壓縮過的資料流取代原本的資料流
- app.Response.Filter = new GZipStream(Filter, CompressionMode.Compress);
- //將壓縮格式加入至標頭
- app.Response.AppendHeader("Content-Encoding", "gzip");
- //將壓縮格式寫入事件
- app.Context.Trace.Warn("Gzip enabled");
- app.Context.Items["Compression"] = "Gzip enabled";
- }
- else
- {
- //將壓縮過的資料流取代原本的資料流
- app.Response.Filter = new DeflateStream(Filter, CompressionMode.Compress);
- //將壓縮格式加入至標頭
- app.Response.AppendHeader("Content-Encoding", "deflate");
- //將壓縮格式寫入事件
- app.Context.Trace.Warn("Deflate enabled");
- app.Context.Items["Compression"] = "Deflate enabled";
- }
- }
- }
- }
基本上 ... ScriptResource.axd 這個檔案是不可以壓縮的(不然後果嚴重) 瀏覽器不會自己解壓縮
所以我把這個檔案排除
再來最重要的 是在Web.config 內將其加入至httpModules標籤內
<add name="HttpCompression" type="Library.framework.HttpCompression"/>
再來一個 可以在頁面底部標示啟動哪種壓縮模式(請自行加入文件底部)
<%=Context.Items["Compression"].ToString() %>
以上
- ASP.NET頁面壓縮 Compression Gzip Deflate
- .NET GZIP,deflate压缩(转)
- Node.js HTTP requests with gzip/deflate compression
- Accept-Encoding: gzip,deflate
- deflate与gzip
- gzip and deflate
- Accept-Encoding: gzip,deflate
- gzip,deflate,zlib辨析
- GZIP, ZLIB, DEFLATE, 文件格式
- Accept-Encoding: gzip,deflate
- gzip,deflate,zlib辨析
- GZip 和 deflate压缩
- deflate与gzip
- apache开启gzip deflate
- gzip,deflate,zlib辨析
- Gzip compression/decompression
- Gzip compression/decompression
- Compression Support in ASP.NET 2.0
- ajax返回java对象
- 算法的演化 . 简化与统一 . 计算数学之美
- 函数说明(DeleteDC) 08.11.4
- Moblin Linux开发手册(三)_通过LibOSSO接收和操作事件
- ScaledCanvas
- ASP.NET頁面壓縮 Compression Gzip Deflate
- 网站模板下载
- zz - 跨进程API Hook
- Moblin Linux开发手册(四)_UI状态和用户数据自动保存
- JSTL_Core_表达式操作
- 笑死你啊
- 行迁移检测及解决一例
- gggg
- 英语学习