所以我通过动作过滤器压缩输出流:
var response = filterContext.HttpContext.Response;
response.Filter = new DeflateStream(response.Filter), CompressionMode.Compress);
哪个效果很好.现在,我还想删除多余的空白.我找到了Mads Kristensen的http模块http://madskristensen.net/post/A-whitespace-removal-HTTP-module-for-ASPNET-20.aspx.
public class WhitespaceFilter : Stream {
    // using Mads Kristensen httpModule
    // http://madskristensen.net/post/A-whitespace-removal-HTTP-module-for-ASPNET-20.aspx
    private Stream os;
    private static Regex reg = new Regex(@"^\s+", RegexOptions.Multiline | RegexOptions.Compiled); 
    public WhitespaceFilter(Stream os) {
        this.os = os;
    }
    //methods that need to be overridden from stream
    public override bool CanRead {
        get { return true; }
    }
    public override bool CanSeek {
        get { return true; }
    }
    public override …在ASP.NET MVC 3上,我创建了一个动作过滤器,用于从整个html中删除空白区域.它的工作方式与我预期的大部分时间相同,但现在我需要更改RegEx以便不触及pre元素内部.
我从令人敬畏的Mads Kristensen的博客中获得了RegEx逻辑,我不确定如何为此目的修改它.
这是逻辑:
public override void Write(byte[] buffer, int offset, int count) {
    string HTML = Encoding.UTF8.GetString(buffer, offset, count);
    Regex reg = new Regex(@"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}");
    HTML = reg.Replace(HTML, string.Empty);
    buffer = System.Text.Encoding.UTF8.GetBytes(HTML);
    this.Base.Write(buffer, 0, buffer.Length);
}
过滤器的整个代码:
任何的想法?
编辑:
大注:
我的意图完全没有加快响应时间.事实上,这可能会减慢速度.我GZiped页面,这个缩小使我每页获得大约4 - 5 kb,这没什么.