DiscountASP.NET Forums                  

Go Back   DiscountASP.NET Forums > Site Programming, Development and Design > ASP.NET > ASP.NET 2.0

Notices

Closed Thread
 
Thread Tools Search this Thread
Old 02-25-2007, 05:29 AM   #1
psantiago
 
Join Date: Feb 2007
Posts: 6
HTTP Module Compression and Whitespace Removal

Hello




I created an HTTP Module to Compress and Remove all the white space in ASPX Files.


It actually works pretty well. Certainly has reduced the size of the files and increased download times.


Process works perfectly until I start dealing with pages that use AJAX.


I have attached the error message as an image file and the results of fiddler below.


I also attached the HTTP Module.


I downloaded and installed Fiddler to assist with the problem.


Fiddler Results





= BODY ====
ScriptManager1=ScriptManager1|Button1
__EVENTTARGET=
__EVENTARGUMENT=
__VIEWSTATE=OyuAJXY2qQCO5FgjWOIufVLIegV3gFQYF0lQQB KJOFoBLX0Hu7iJjxCSUrdvXSiYwROC02ek714jfq7LbVQ3p79B E+zeBjn4FlYEFakl2YQhuLU2oYNHV2cwCO9RNJEU2spk+IpPo3 ceU1UWDEWWgw==
Keywords=
Loc=17
Categories=39
__VIEWSTATEENCRYPTED=
__EVENTVALIDATION=hIZBJ4SjmsNn113GqXKW2wKnaBOk533S SY0q8vo4hnOyeAXYpe6EeRg2MfU1nKvDMbBPqNNzOqX4Q/l0wc80A2xwjFf8YJq2SQQkBf3qekuDW6n5/w6v2h9InvEmDSY+cknoEuip/aaADJbvSF7fpAbbm/05iQGQ/996gPDcehOwqXyZIM7C/EGXosG9+S9IFlHXL74f57omMHNCjAZKhbX7saiRxmD5ub71p0Z NZRnXdR8+98ZM9X8o6mIEk/N73grEZoIl7fi24WnmSFOAabs3m3WKxMWDcF58GpglMZlsSzRX llGU7hMqSeheQkOY2YZDfpmIPbK2JNU8cxNobg078h/ne9XPhigt9LEMePqB2GINiph0/uiK1Z+Kj5VVfh1aGCkh/xim90Yi0cZhFAZnOL/GEenLGiLQXqsAm895Mit95WQyd64MphZmbe1xg4jUDLN+fnJnD KAGCiblWhBZGSBkLucz8cffpOaGWcQwEVawnpKqHlCCepRemRw e
Button1=Search






HTTP/1.1 200 OK
Server: ASP.NET Development Server/8.0.0.0
Date: Sun, 25 Feb 2007 04:47:30 GMT
X-AspNet-Version: 2.0.50727
Content-Encoding: gzip
Transfer-Encoding: chunked
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Connection: Close





POST /BankStaffers2005/Searchlisting.aspx HTTP/1.1
Accept: */*
Accept-Language: en-us
Referer: http://localhost:2191/BankStaffers20...chlisting.aspx
x-microsoftajax: Delta=true
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost:2191
Content-Length: 873
Proxy-Connection: Keep-Alive
Pragma: no-cache


ScriptManager1=ScriptManager1|Button1&__EVENTT ARGET=&__EVENTARGUMENT=&__VIEWSTATE=OyuAJX Y2qQCO5FgjWOIufVLIegV3gFQYF0lQQBKJOFoBLX0Hu7iJjxCS UrdvXSiYwROC02ek714jfq7LbVQ3p79BE%2BzeBjn4FlYEFakl 2YQhuLU2oYNHV2cwCO9RNJEU2spk%2BIpPo3ceU1UWDEWWgw%3 D%3D&Keywords=&Loc=17&Categories=39&am p;__VIEWSTATEENCRYPTED=&__EVENTVALIDATION=hIZB J4SjmsNn113GqXKW2wKnaBOk533SSY0q8vo4hnOyeAXYpe6EeR g2MfU1nKvDMbBPqNNzOqX4Q%2Fl0wc80A2xwjFf8YJq2SQQkBf 3qekuDW6n5%2Fw6v2h9InvEmDSY%2BcknoEuip%2FaaADJbvSF 7fpAbbm%2F05iQGQ%2F996gPDcehOwqXyZIM7C%2FEGXosG9%2 BS9IFlHXL74f57omMHNCjAZKhbX7saiRxmD5ub71p0ZNZRnXdR 8%2B98ZM9X8o6mIEk%2FN73grEZoIl7fi24WnmSFOAabs3m3WK xMWDcF58GpglMZlsSzRXllGU7hMqSeheQkOY2YZDfpmIPbK2JN U8cxNobg078h%2Fne9XPhigt9LEMePqB2GINiph0%2FuiK1Z%2 BKj5VVfh1aGCkh%2Fxim90Yi0cZhFAZnOL%2FGEenLGiLQXqsA m895Mit95WQyd64MphZmbe1xg4jUDLN%2BfnJnDKAGCiblWhBZ GSBkLucz8cffpOaGWcQwEVawnpKqHlCCepRemRwe&Butto n1=Search
HTTP/1.1 200 OK
Server: ASP.NET Development Server/8.0.0.0
Date: Sun, 25 Feb 2007 04:47:30 GMT
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Connection: Close
Content-Length: 0





#ResultProtocolHostURLBodyCachingContent-TypeUser-defined
58200HTTPlocalhost:2191/BankStaffers2005/Searchlisting.aspx3,019private text/plain; charset=utf-8














MODULE





Imports Microsoft.VisualBasic


Imports System.Web


Imports System


Imports System.Buffer


Imports System.Text


Imports System.IO


Imports System.IO.Compression


Imports System.Data


Imports System.Configuration


Imports System.Web.Security


Imports System.Web.UI


Imports System.Web.UI.WebControls


Imports System.Web.UI.WebControls.WebParts


Imports System.Web.UI.HtmlControls


Imports System.Text.RegularExpressions


Public Class CompressAndTrim


Implements IHttpModule


Private Const GZIP As String = "gzip"


Private Const DEFLATE As String = "deflate"


Public Sub Dispose() Implements System.Web.IHttpModule.Dispose


End Sub


Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init


AddHandler app.BeginRequest, AddressOf Me.OnBeginRequest


End Sub


Public Sub OnBeginRequest(ByVal s As Object, ByVal e As EventArgs)


Dim app As HttpApplication = CType(s, HttpApplication)


If app.Request.RawUrl.Contains(".aspx") Then


Dim starter As Stream = Nothing


If IsEncodingAccepted(GZIP) Then


starter = New GZipStream(app.Response.Filter, CompressionMode.Compress)


SetEncoding(GZIP)


ElseIf IsEncodingAccepted(DEFLATE) Then


starter = New DeflateStream(app.Response.Filter, CompressionMode.Compress)


SetEncoding(DEFLATE)


End If


If starter Is Nothing Then


app.Response.Filter = New WhitespaceFilter(app.Response.Filter)


Else


app.Response.Filter = New WhitespaceFilter(starter)


End If


End If


End Sub


Private Function IsEncodingAccepted(ByVal encoding As String) As Boolean


Return HttpContext.Current.Request.Headers("Accept-encoding") <> Nothing And HttpContext.Current.Request.Headers("Accept-encoding").Contains(encoding)


End Function


Private Sub SetEncoding(ByVal encoding As String)


HttpContext.Current.Response.AppendHeader("Content-encoding", encoding)


End Sub


End Class


Class WhitespaceFilter


Inherits Stream


Public Sub New(ByVal sink As Stream)


_sink = sink


End Sub


Private _sink As Stream


Private Shared reg As Regex = New Regex("(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}")


Public Overrides ReadOnly Property CanRead() As Boolean


Get


Return True


End Get


End Property


Public Overrides ReadOnly Property CanSeek() As Boolean


Get


Return True


End Get


End Property


Public Overrides ReadOnly Property CanWrite() As Boolean


Get


Return True


End Get


End Property


Public Overrides Sub Flush()


_sink.Flush()


End Sub


Public Overrides ReadOnly Property Length() As Long


Get


Return 0


End Get


End Property


Private _position As Long


Public Overrides Property Position() As Long


Get


Return _position


End Get


Set(ByVal Value As Long)


_position = Value


End Set


End Property


Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer


Return _sink.Read(buffer, offset, count)


End Function


Public Overrides Function Seek(ByVal offset As Long, ByVal origin As SeekOrigin) As Long


Return _sink.Seek(offset, origin)


End Function


Public Overrides Sub SetLength(ByVal value As Long)


_sink.SetLength(value)


End Sub


Public Overrides Sub Close()


_sink.Close()


End Sub


Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)


Dim data() As Byte = New Byte(count) {}


System.Buffer.BlockCopy(buffer, offset, data, 0, count)


Dim html As String = System.Text.Encoding.Default.GetString(buffer)


html = reg.Replace(html, String.Empty)


Dim outdata() As Byte = System.Text.Encoding.Default.GetBytes(html)


_sink.Write(outdata, 0, outdata.GetLength(0))


End Sub


End Class








Attached Images
File Type: jpg untitled.JPG (63.0 KB, 9 views)
psantiago is offline  
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 05:56 AM.


vBulletin ©Jelsoft Enterprises Ltd.