Compress and Cache JSS and CSS Files in ASP.NET

HTTPCombiner

Credit goes to : http://code.msdn.microsoft.com/HttpCombiner

In my last article i have discussed how to compress .aspx pages. Now we are going to see how to compress the Javascript and CSS file.

Once the JS and CSS file is requested to the server and has been Cached. On next time You get it from Cache.

If i have 10 Javascript file and 10 Stylesheets , every time when you request the page – each time it requested the server for JS and CSS file ie: 10 request to server for CSS and 10 request to Server for JS, to avoid the issue we have to combine all the CSS as one file and all JS as one file. Therefore only one request is sent to the server to get the JS file so totally two request has been sent to the server one for JS and CSS.

There is some JS and CSS compressor tools available for free, these tools will
compress or minify your JS or CSS file this is the one waybut we have to do manually.

If you want to compress the file at runtime, here i am using HTTPCombiner to make the all the CSS as 1 CSS and all the JS and 1 JS file.

It has one file ie: HTTPCombiner.ashx – to Compress the CSS and JS file.Place the file on your project.

Add these two line to include all your Css and Js file on your appSettings tag on your web.config, You can get the file name using key part of the appSettings.

<add key="Set_Css"
value="App_Themes/Default/Css1.css,App_Themes/Default/Css2.css"/>
 <add key="Set_Javascript"
value="Javascripts/Js1.js,Javascripts/Js2.js,
 http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"/>

After that you have to give the cSS and JS path on the Page1.aspx.

<link   type="text/css" rel="Stylesheet"
 href="HttpCombiner.ashx?s=Set_Css&t=text/css&v=1" />
<script type="text/javascript"
 src="HttpCombiner.ashx?s=Set_Javascript&t=type/javascript&v=2" >
 </script>

Thats all, now you upload the file to server and check the JS,CSS file compressed (check the file length before and after applying this technique) using Fiddler tool or any other tools.

These are some tools to check Page response time.

http://www.aptimize.com/

http://websiteoptimization.com/services/analyze/

http://www.fiddler2.com/

Compress ASP.NET pages

Good Evening to All.

Here I am going to cover how to compress the .aspx pages.

so there are no.of ways to compress the pages in asp.net

1) using IIS.
2) using Code ie: through HTTPCompress.dll i got the source code from codeproject.com.
so i am going to share with you.

There are two type of Compression ie: Deflate , GZIP. here i am going to use GZIP compression to compress the asp.net pages.

First Place the DLL file ie::HTTPCompress.dll to the Bin folder of your project.

Then you have to include some tag on web.config file

<configSections>
		<sectionGroup name="Flanders">
			<section name="HttpCompress" type="Flanders.Library.Modules.HttpCompress.Configuration, HttpCompress"/>
		</sectionGroup>
	</configSections>
<Flanders>
		<HttpCompress  compressionType="GZip">
			<ExcludedPaths>
				<add path="NoCompression.aspx" />
			</ExcludedPaths>
			<ExcludedMimeTypes>
				<add mime="image/jpeg" />
			</ExcludedMimeTypes>
		</HttpCompress>
</Flanders>

Here i am using GZiP Compression technique. there are two more inner Tags ie: ExcludePaths, ExcludeMimeTypes.

ExcludePaths – It includes the Page Name that don’t want to compress.

ExcludeMimeTypes – Include the mime types that dont want to compress the images..

By default images are compressed so no need to compress the image while using compression so our ExcludedMimeTypes tag should be like this.

<ExcludedMimeTypes>
		<add mime="image/jpeg" />
		<add mime="image/jpg" />
		<add mime="image/png" />
		<add mime="image/gif" />
</ExcludedMimeTypes>

Finally we need to add the httpModules

	<httpModules>
			<add</code> name="HttpCompressModule" type="Flanders.Library.Modules.HttpCompress.HttpModule,HttpCompress"/>
	</httpModules>

Download Source Code

Credit goes to :

Ref: http://www.codeproject.com/KB/aspnet/HttpCompress.aspx

Postback not works when using HTTPCompression

Some members asked this question on forums.

When i am going to compress the .aspx pages using HTTPCompression, the postback will not works. Because it also compressing the Scripresource.axd, webresource.axd file.

To make the postback works in your project  you do not compress the above two files, by adding these code.

Solution:


........,

<HttpCompress  compressionType="GZip">
 <ExcludedPaths>
 <add path="scriptresource.axd" />
 <add path="webresource.axd" />
 </ExcludedPaths>

....,

And one more thing don’t compress the images like jpg, gif, jpeg etc.. because its already compressed one. if you compress the image it will degrade the performance. you should the exclude the image from compression.

Solution:


..,

<ExcludedMimeTypes>
 <add mime="image/jpeg" />
 </ExcludedMimeTypes>
 </HttpCompress>

Thanks to all.

Convert String to DateTime in ASP.NET

I saw the question repeatedly asking on forums ie: how to convert the String to datetime.

even if someone give solution still the problems exists..,

ErrorString is not recognized as a valid DateTime.

Here i am giving the solution to overcome the problem.

First make sure whether you entered is a valid date or not because User may enter alphabets, special symbols etc.. so in order to avoid that , I have to validate the textbox. Here i am using the Regex to to validate the date.

This is my Article to vaildate date using Regex

try
{
 string sDate ="06/05/2010";
// this the regex to match the date ie: dd/MM/yyyy
 string _dateExpression = @"^((0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](?:19|20)\d\d)$";
 Regex chkDate = new Regex(_dateExpression);
 if ((chkDate.IsMatch(sDate))
 {
 // so if the date is valid and its matched you can store the date on DB or do some manipulatio.
 }
 else
 {
 // show invalid date
 }

}
 catch (System.FormatException ex)
 {
 // show invalid date
 }
catch(Exception ex1)
{
throw;
}

So if the user enter other than numbers it shows format exception to avoid this exception. once i caught the FormatException i am showing the Message to user ie:- input is not valid date or something.

Another small manipulation on DateTime


DateTime sDate = new DateTime();

sDate = DateTime.Today; //  Here i am getting like this 5/6/2010

// So i want this format 05/06/2010  - for this i am using Format to Convert the Date as i Want.

string gDate = String.Format("{0:dd-MM-yyyy}", sDate);

Thanks to All.

Follow

Get every new post delivered to your Inbox.