/// <summary> /// If supported, removes a runtime compression filter from the response output. /// </summary> /// <param name="context"></param> public static void DisableStreamCompression(HttpContext context) { switch (ResourceHandler.GetOutputEncoding(context)) { case BuildResultType.Gzip: { #if !__MonoCS__ // remove for Mono Framework try { if (ResourceHandler.GzipContentEncoding.Equals(context.Response.Headers[ResourceHandler.HeaderContentEncoding], StringComparison.OrdinalIgnoreCase)) { context.Response.Headers.Remove(ResourceHandler.HeaderContentEncoding); } } catch (PlatformNotSupportedException) { } #endif if (context.Response.Filter is GZipStream) { context.Response.Filter = null; } break; } case BuildResultType.Deflate: { #if !__MonoCS__ // remove for Mono Framework try { if (ResourceHandler.DeflateContentEncoding.Equals(context.Response.Headers[ResourceHandler.HeaderContentEncoding], StringComparison.OrdinalIgnoreCase)) { context.Response.Headers.Remove(ResourceHandler.HeaderContentEncoding); } } catch (PlatformNotSupportedException) { } #endif if (context.Response.Filter is DeflateStream) { context.Response.Filter = null; } break; } } }
/// <summary> /// If supported, adds a runtime compression filter to the response output. /// </summary> /// <param name="context"></param> public static void EnableStreamCompression(HttpContext context) { // Good request compression summary: http://www.west-wind.com/WebLog/posts/102969.aspx switch (ResourceHandler.GetOutputEncoding(context)) { case BuildResultType.Gzip: { context.Response.AppendHeader(ResourceHandler.HeaderContentEncoding, ResourceHandler.GzipContentEncoding); context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress, true); break; } case BuildResultType.Deflate: { context.Response.AppendHeader(ResourceHandler.HeaderContentEncoding, ResourceHandler.DeflateContentEncoding); context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress, true); break; } } }
/// <summary> /// Writes the infor object to the HttpResult stream /// </summary> /// <param name="context"></param> /// <param name="info"></param> /// <param name="isDebug"></param> public static void WriteResponse(HttpContext context, IOptimizedResult info, bool isDebug) { HttpResponse response = context.Response; switch (ResourceHandler.GetOutputEncoding(info, context, isDebug)) { case BuildResultType.PrettyPrint: { response.ContentEncoding = Encoding.UTF8; response.Output.Write(info.PrettyPrinted); break; } case BuildResultType.Gzip: { response.AppendHeader(ResourceHandler.HeaderContentEncoding, ResourceHandler.GzipContentEncoding); response.OutputStream.Write(info.Gzipped, 0, info.Gzipped.Length); break; } case BuildResultType.Deflate: { response.AppendHeader(ResourceHandler.HeaderContentEncoding, ResourceHandler.DeflateContentEncoding); response.OutputStream.Write(info.Deflated, 0, info.Deflated.Length); break; } case BuildResultType.Compact: default: { response.ContentEncoding = Encoding.UTF8; response.Output.Write(info.Compacted); break; } } }