<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Jwalin Khatri &#187; AJAX</title>
	<atom:link href="http://jwalin.wordpress.com/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://jwalin.wordpress.com</link>
	<description>Don't limit yourself</description>
	<lastBuildDate>Wed, 14 Oct 2009 18:29:15 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='jwalin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/499eff1ef6b26c8546dbe7bd01c0ac6c?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Jwalin Khatri &#187; AJAX</title>
		<link>http://jwalin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jwalin.wordpress.com/osd.xml" title="Jwalin Khatri" />
		<item>
		<title>Are you making these 3 common ASP.NET AJAX mistakes?</title>
		<link>http://jwalin.wordpress.com/2008/07/08/are-you-making-these-3-common-aspnet-ajax-mistakes/</link>
		<comments>http://jwalin.wordpress.com/2008/07/08/are-you-making-these-3-common-aspnet-ajax-mistakes/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 17:35:04 +0000</pubDate>
		<dc:creator>jwalin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[UPDATE PANEL]]></category>

		<guid isPermaLink="false">http://jwalin.wordpress.com/?p=26</guid>
		<description><![CDATA[http://encosia.com/2007/10/24/are-you-making-these-3-common-aspnet-ajax-mistakes/
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jwalin.wordpress.com&blog=2317521&post=26&subd=jwalin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://encosia.com/2007/10/24/are-you-making-these-3-common-aspnet-ajax-mistakes/">http://encosia.com/2007/10/24/are-you-making-these-3-common-aspnet-ajax-mistakes/</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jwalin.wordpress.com/26/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jwalin.wordpress.com/26/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jwalin.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jwalin.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jwalin.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jwalin.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jwalin.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jwalin.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jwalin.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jwalin.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jwalin.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jwalin.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jwalin.wordpress.com&blog=2317521&post=26&subd=jwalin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jwalin.wordpress.com/2008/07/08/are-you-making-these-3-common-aspnet-ajax-mistakes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e4be699abbb541e9c09cfcfce329f194?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jwalin</media:title>
		</media:content>
	</item>
		<item>
		<title>Optimize your page for UpdatePanel</title>
		<link>http://jwalin.wordpress.com/2008/03/26/optimize-your-page-for-updatepanel/</link>
		<comments>http://jwalin.wordpress.com/2008/03/26/optimize-your-page-for-updatepanel/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 16:34:58 +0000</pubDate>
		<dc:creator>jwalin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[UPDATE PANEL]]></category>

		<guid isPermaLink="false">http://jwalin.wordpress.com/?p=13</guid>
		<description><![CDATA[Than&#8217;s to Miron 
The Update Panel response contain the new html for the specific location that needs to be update and the complete new ViewState for the whole page. So, one more thing we can to optimize the UpdatePanel is to compress the ViewState before it been sent to the client. We don&#8217;t need to do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jwalin.wordpress.com&blog=2317521&post=13&subd=jwalin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Than&#8217;s to Miron </p>
<p>The Update Panel response contain the new html for the specific location that needs to be update and the complete new ViewState for the whole page. So, one more thing we can to optimize the UpdatePanel is to <strong>compress the ViewState </strong>before it been sent to the client. We don&#8217;t need to do it in normal response because we use (or should use) a compression module that compress all the page response and that includes the ViewState. Compress the ViewState can save you some more KB from the async response. Another option is to save the ViewState in the server (file os session), and not send it at all. To compress the ViewState we needs to override the &#8216;LoadPageStateFromPersistenceMedium&#8217; and the &#8216;SavePageStateToPersistenceMedium&#8217; methods that load and save the view state.</p>
<p>Here is the code how to compress the ViewState for the UpdatePanel response only, just copy it to your base page:</p>
<div class="code"> <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">object</span> LoadPageStateFromPersistenceMedium()<br />
{<br />
    <span class="kwrd">string</span> viewState = Request.Form["__COMPRESSEDVS"];<br />
    <span class="kwrd">if</span> (viewState != <span class="kwrd">null</span>)<br />
    {<br />
         <span class="kwrd">byte</span>[] data = Convert.FromBase64String(viewState);<br />
         data = Utils.Decompress(data);<br />
         LosFormatter lf = <span class="kwrd">new</span> LosFormatter();<br />
         <span class="kwrd">return</span> lf.Deserialize(Convert.ToBase64String(data));<br />
    }<br />
    <span class="kwrd">else</span><br />
    {<br />
         <span class="kwrd">return</span> <span class="kwrd">base</span>.LoadPageStateFromPersistenceMedium();<br />
    }<br />
}<span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> SavePageStateToPersistenceMedium(<span class="kwrd">object</span> viewState)<br />
{<br />
    <span class="kwrd">if</span> (Utils.IsMsAjaxCallback(Request))<br />
    {<br />
         LosFormatter lf = <span class="kwrd">new</span> LosFormatter();<br />
         <span class="kwrd">using</span> (StringWriter writer = <span class="kwrd">new</span> StringWriter())<br />
         {<br />
             lf.Serialize(writer, viewState);<br />
             <span class="kwrd">string</span> viewStateString = writer.ToString();<br />
             <span class="kwrd">byte</span>[] data = Convert.FromBase64String(viewStateString);<br />
             data = Utils.Compress(data);<br />
             ScriptManager.RegisterHiddenField(<span class="kwrd">this</span>, &#8220;__COMPRESSEDVS&#8221;, Convert.ToBase64String(data));<br />
         }<br />
    }<br />
    <span class="kwrd">else</span><br />
    {<br />
         <span class="kwrd">base</span>.SavePageStateToPersistenceMedium(viewState);<br />
    }<br />
}</div>
<div class="code"></div>
<div class="code"></div>
<div class="code"></div>
<div class="code">=================</div>
<div class="code">HERE IS THE Utils.cs CLASS</div>
<div class="code">=================</div>
<div class="code">using System;<br />
using System.Web;<br />
using System.IO;<br />
using System.IO.Compression;</div>
<div class="code">public class Utils<br />
{<br />
    public static bool IsMsAjaxCallback(HttpRequest request)<br />
    {<br />
        return (request != null &amp;&amp; request.Headers["X-MicrosoftAjax"] != null);<br />
    }</div>
<div class="code">
    public static byte[] Compress(byte[] data)<br />
    {<br />
        using (MemoryStream ms = new MemoryStream())<br />
        {<br />
            using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))<br />
            {<br />
                zip.Write(data, 0, data.Length);<br />
                zip.Dispose();<br />
                return ms.ToArray();<br />
            }<br />
        }<br />
    }</div>
<div class="code">    public static byte[] Decompress(byte[] data)<br />
    {<br />
        using (MemoryStream ms = new MemoryStream())<br />
        {<br />
            int dataLength = BitConverter.ToInt32(data, 0);<br />
            ms.Write(data, 0, data.Length);</div>
<div class="code">            byte[] buffer = new byte[dataLength];</div>
<div class="code">            ms.Position = 0;<br />
            using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))<br />
            {<br />
                zip.Read(buffer, 0, buffer.Length);<br />
            }<br />
            return buffer;<br />
        }<br />
    }<br />
}<br />
 </div>
<div class="code"></div>
<div class="code"></div>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jwalin.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jwalin.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jwalin.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jwalin.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jwalin.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jwalin.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jwalin.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jwalin.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jwalin.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jwalin.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jwalin.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jwalin.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jwalin.wordpress.com&blog=2317521&post=13&subd=jwalin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jwalin.wordpress.com/2008/03/26/optimize-your-page-for-updatepanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e4be699abbb541e9c09cfcfce329f194?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jwalin</media:title>
		</media:content>
	</item>
	</channel>
</rss>