HttpHandlers / Modules :: Compression Module And Caching Conflict - Compression X 2
Mar 23, 2010
I have a compression module built based on several examples on the web. Initially, I hooked into the BeginRequest event of the application context to conditionally compress certain file types. This seems to have worked fine for JS and HTML, but CSS was giving me trouble. Here are the specific steps I could take to reproduce the problem consistently.
I'm tring to implement what Steve Souders discusses [URL] about forcing gzip compression
I've got a module that's running this:
[code]....
CompressionUtils.GzipSupported just checks for the 'accepts-encoding' header while CompressionUtils.GzipSupportedExplicitly and CompressionUtils.GzipNotSupportedExplicitly check for the cookie saying whether the browser really can read gzip
But when I load a page in Firefox I get this error:
Content Encoding Error
The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.
and in Fiddler it shows that the content-encoding header has been added but the content hasn't been compressed
On PageSpeed Insights they recommend highly doing two things:
1) Leverage browser caching
Setting an expiry date or a maximum age in the HTTP headers for static resources instructs the browser to load previously downloaded resources from local disk rather than over the network.
2) Enable compression
Compressing resources with gzip or deflate can reduce the number of bytes sent over the network.
We are with Network solutions and believe they are using IIS 6 with regular asp.net code. Some of the images are using Amazon S3/Cloudfront.
How do we implement the above items? I see a lot for IIS 7.
I'm getting around 50% compression using System.IO.Compression and I think it could/should be getting around 75% by setting the compression level higher. Is there a way to improve the compression level or should I be looking for a different solution?
I have IReadOnlySessionState and IRequiresSessionState on my module but still httpApplication.Context.Session == null is this because these session state hasn't been created yet? is there a way around this?
I have developed a quick module that adds some text to the bottom of every page. This text will basically inform the user they are using my application in a test environment and save me editing the Master/Content pages for all my files.Sadly, my code adds the string AFTER the </html> tag, which isn't very good. Can anyone advise how to make this module add the stringprevious to the </body> tag, so that it gets rendered correctly according the HTML standards?
Can anyone tell me if there is a way to convert all URL's to lowercase using an Http Module for URL rewriting? For example www.homeforhire.com/Home.aspx should be converted to lowercase.
I cannot use the IIS7 URL Rewriter because I need to perform database lookups as part of my URL rewriting.
I have researched this extensively but have not had any luck finding a solution.
The only alternative I can think of is to use a dynamically created canonical link in my page headers.
Our site uses urlRewriter http module that does the url rewriting for us. I want to create another http module that will handle our customize URL redirects. Now I want this new customize http module to be call before the UrlRewriter module (to avoid page not found messages the UrlRewriter generates). Is there a way we can contol the calling order ?
I am writing a custom HTTP module to implement user authentication and appropriate access rights. And for identifying access rights for the user also depends on identifying the client's machine details like IP address, machine name, etc. The access rights will depend based on from which location or machine the user is trying to login.
Can we get these details from the HttpApplication or HttpContext object?
I hope I am posting into the right area... I want to know if you can access a session variable from a HTTP Module in IIS 7. Here is the scenario, I want to access the session values (i.e. User Object) from a HTTP Module. I have read oodles and tried many things but to no avail. I guess the application uses Forms authentication to authorize a logon to the site. I want to monitor the url that is submitted... RAWUrl property and if they are going to a certain page I want to grab their user object from THEIR session and validate them for access to that page. I want to use a httpmodule for this. The long and short of this is "Can I get access to session variables from the request from the httpmodule code behind? If I can, could you beso kind as to show me a working sample... I have tried many permutations on this using httpapplication, context and so forth and I can't seem to get access to session variables that would belong to the users request. it this possible?
The iPhone sends an HTTP GET request to my web application to recieve an update for an internet calendar. The iPhone does not conform to the RFC 822 Date Format for this request. It sends the If-Modified-Since as follows:
RFC 822 format - Sun, 06 Nov 1994 08:49:37 GMT iPhone Format - Sun, 6 Nov 1994 08:49:37 GMT
I dont know much about handlers or modules. Is it possible to write a handler or module that could intercept this request and reformat the If-Modified-Since date format to the standard. Currently when IIS recieves this request it immediately sends back a 400 Error because of this invalid format.
I am wanting to create a url rewriting module and have investigated numerous examples on the web. However, most do not address the issues of handling postbacks and querystrings. I cam across a few examples, but don't fully understand how they work and thus customizing them to my needs becomes a problem. I understand the basic concepts of rewriting, but can someone explain, or point me to a resource on how postbacks and querystrings are handled?
I have a module that subscribes to PreRequestHandlerExecute event, which uses the Session object. When i set the webconfig compilationdebug flag to false, the Session object is null when making requests to the web service. It works fine for .aspx requests, but only have problems for .asmx. When i set the debug flag to true everything works fine. I need to set this flag to false for production, but can't seem to get it work.I'm using II7 and the integrated pipeline, so this event will fire for all requests.
i have a custom handler which captures user's book mark entry. To debug this handler, i have created a file "test1.txt" in code behind which saves the user entry. After the debug, i removed the text file (test1.txt) then re-complied the web app and deployed new DLLs for the site. But, the site is still looking for test1.txt file. i dont know how to confirm if the handler is really removed from the new DLL. Also, looked at the handler code behind file and didn't find any entry with test1.txt. So,
My pages are automatically being compressed by IIS7 with GZIP. but, for one particular page, I need to stream it to the user, using Response.Flush() when needed. But when the output is being compressed, the IIS server seems to collect all my output until the page is done before compressing and sending it to the client. That nullifies my attempt to Flush the content out to the user.
Is there a way that I can have this one page opt out of the compression?
One possible option
I've determined that if I manually set the content type to one that does not match the IIS configuration at c:windowssystem32inetsrvconfigapplicationhost.config, then IIS will not compress it. Eg. Response.ContentType = "x-text/html". This works okay with IE8, as it falls back to display the HTML. But Firefox will ask the user what to do with the unknown file type.
This could work, if there was another Mime Type I could use that browsers would accept as HTML, that is not matched in the applicationhost.config. For reference, these are the mime types that will be compressed:
[code]...
Others options?
Are there other options to opt out of compression?
i redirect a page from http to https using http module begin request handler .i am calling webservice using ajax but it is saying webserice not defined .which otherwise works fineits work fine when rediect page in page_load instead .but i need to add function for https to http in every page. i still not know why ajax is not working when i use http module for redirect
I have an ASP.NET web application and I'm thinking about the following: before sending any HTML or CSS content to users, I wish to 'compress' them, then cache the result and send that to the clients.I know it is possible to compress these by removing whitespaces, comments and stuff like that, but I'm not really familiar with more advanced solutions for this.
Apart from this, what compression methods are there and what are the advantages of each of them?Does some browsers or the HTTP protocol itself support any kind of compression?
EDIT: I'm interested in doing this to dynamically-generated HTML, too.
I had an interview Thursday and one questions that I was asked in the technical interview was a little confusing.
First, he asked me about Viewstate and I explained to him what all that entailed.
He then asked me what happens if the data you are putting into the Viewstate gets to big.
I told him you could then use Sessions or start storing things in the Database.
He said, what about Data Compression? I immediately responded by saying, yes you can use Serialization/Deserialization to store/retrieve the data (i'm using that in my open source project).
When he says "Data Compression", is he talking about "Serialization" or is this something different?
I am not good at IIS management.I enabled gzip compression for my web site but In IIS Temporary Compressed Files folder,i dont see any aspx type file.I just see js,text,css and some html files.Is that normal?Why dont i see aspx pages as compressed.Thats my metabase.xml and i think that my settings are true.
I have trouble with JSON response compression. I look to response headers after uploading website to production server (Windows 2008, IIS 7) and found uncompressed response. Turning on "Enabled static compression" and ""Enable dynamic compression" in IIS control panel does not effect. ASPX pages was responsed gzipped, but webservice response uncompressed.
I looked to google, but no answer found about this trouble. Also, I try this [URL] way (and adding to web.config this module) - but this source is excellent working at development machine with ASP.NET development server (and have seven times response size reduced) and totally ignored at IIS7.
How I can apply gzip compression to json responses from my webservice?
I have an application with a FileUpload control. The code behind saves the uploaded file (which I've stipulated in the code must have a ".jpeg" extension) to the webserver's hard disk. Details about the image, such as its ID, Title, Description and Upload date are saved in an MS SQL Server database. Nothing difficult here.
What I'd like to do instead... is take the uploaded image (which will be a "large", high-quality image), save this as above but ALSO dynamically resize and resample a copy of this image and store a thumbnail of it on the webserver hard drive as well.
I can't find a post which explains how to do this in this forum group. Can anyone point me in the right direction for an answer. I am using Visual Studio 2008, ASP.NET 3.5 and Visual Basic.NET 2008.