<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Chalalo Land : Optimizaci&amp;#243;n</title><link>http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx</link><description>Etiquetas: Optimizaci&amp;#243;n</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>[Tips] Desactivar EnablePartialRendering en ScriptManager cuando no utilices UpdatePanels (WebForm no Dead)</title><link>http://geeks.ms/blogs/gperez/archive/2011/02/23/tips-desactivar-enablepartialrendering-en-scriptmanager-cuando-no-utilices-updatepanels-webform-no-dead.aspx</link><pubDate>Wed, 23 Feb 2011 05:19:08 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:189414</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=189414</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=189414</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2011/02/23/tips-desactivar-enablepartialrendering-en-scriptmanager-cuando-no-utilices-updatepanels-webform-no-dead.aspx#comments</comments><description>&lt;p align="justify"&gt;Hola que tal?, si bien hay personas que se han puesto una bandera de lucha en contra de los webforms (no comparto esta postura, luego escribiré sobre eso), existen muchas aplicaciones construidas bajo la modalidad de WebForms que utilizan ASP.NET Ajax, y sin duda, se seguirán creando.&lt;/p&gt;  &lt;p align="justify"&gt;Uno de los elementos que utilizamos cuando ocupamos ASP.NET Ajax es el ScriptManager, que muchos desarrolladores lo utilizan sin mayor configuración. Es aquí en donde quiero detenerme un momento, y es que si no estas ocupando un UpdatePanel en la página, y tienes un ScriptManager en la página, ahorras generación y carga de Scripts seteando la propiedad EnablePartialRedering en false.&lt;/p&gt;  &lt;p align="justify"&gt;Ahora bien, por mail me preguntaron, “de que sirve un ScriptManager sin un UpdatePanel!”, y la respuesta es “de mucho”, por ejemplo, podemos utilizar algunos controles del Ajax Control Toolkit que no necesitan un UpdatePanel, sin ir más lejos el control Color Picker junto a un ToolkitScripManager (que hereda de Script Manager)&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Caso Ejemplo 1&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;ToolkitScriptManager&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;"&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;ID&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;ToolkitScriptManager1&amp;quot;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;runat&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;=&amp;quot;server&amp;quot;&amp;gt;           &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;ToolkitScriptManager&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;br&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;Color:&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;br&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;TextBox&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;ID&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;TextBox1&amp;quot;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;runat&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;TextBox&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;ColorPickerExtender&lt;/font&gt;&lt;/span&gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;ID&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;TextBox1_ColorPickerExtender&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;runat&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;Enabled&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;=&amp;quot;True&amp;quot;           &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TargetControlID&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;=&amp;quot;TextBox1&amp;quot;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;ColorPickerExtender&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;Lo que resulta en:       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_5CC15A87.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_3D6E8DE7.png" width="181" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal" align="justify"&gt;&lt;strong&gt;Caso Ejemplo 2&lt;/strong&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal" align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal" align="justify"&gt;Como vez, sin UpdatePanel, otro escenario es por ejemplo la llamada asíncrona a un Webservice o a un WebMethod mediante el ScriptManager y Javascript, para el ejemplo veremos el primer caso:&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal" align="justify"&gt;Vamos a tener un WebService que se exponga un WebMethod que se llame cuadrado, que simplemente y para efectos del demo, calculará&amp;#160; y devolverá el cuadrado de un número.&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;Public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;Class&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#2b91af"&gt;wsmartes&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;Inherits&lt;/font&gt;&lt;/span&gt; System.Web.Services.&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#2b91af"&gt;WebService&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;WebMethod&lt;/font&gt;&lt;/span&gt;()&amp;gt; _&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;Public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;Function&lt;/font&gt;&lt;/span&gt; Cuadrado(numero &lt;span&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;Integer&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;Integer&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;Return&lt;/font&gt;&lt;/span&gt; numero * numero&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;Function&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;End&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;"&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;Class&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;Luego desde una página haremos la llamada, primero a configurar el ScriptManager para que pueda acceder al servicio:&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;ScriptManager&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;ID&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;ScriptManager1&amp;quot;&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;runat&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;Services&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;ServiceReference&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;Path&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;~/wsmartes.asmx&amp;quot;&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;Services&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;asp&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;ScriptManager&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;Luego el javascript para la llamada Async al Servicio Web.&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;"&gt; &lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; Calcula() {&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;demo1.wsmartes.Cuadrado(document.getElementById(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Text1&amp;quot;&lt;/font&gt;&lt;/span&gt;).value, ResultoBien, Falla);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; ResultoBien(args) {&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;alert(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;El Cuadrado es: &amp;quot;&lt;/font&gt;&lt;/span&gt; + args);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; Falla(error) {&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;alert(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Error:&amp;quot;&lt;/font&gt;&lt;/span&gt; + error.get_message());&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font style="font-size:9.5pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:9.5pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;En la página tengo solo un un input text y un boton html, al momento de ejecutar:&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_4D9A55E0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_72B7A04C.png" width="357" height="229" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;Pero que pasa si no tenemos desactivada la propiedad &lt;strong&gt;EnablePartialRedering&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_3EA300F9.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_20E1763A.png" width="477" height="217" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Tenemos aprox 464KB descargados a la página por la generación de Script (obviamente no contamos el WebForm1.aspx, que es la pagina propiamente tal) desde el ScriptManager, sin embargo si desactivamos la propiedad en cuestión:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_64D53484.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_312CC826.png" width="485" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Ahora tenemos 349Kb , es decir 115Kb aprox menos en la carga de pagina sin contar que no tenemos la propiedad ScriptMode en Release.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ahora si agregamos esta propiedad, ScriptMode en Release:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_480B99A2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_7F71AAD0.png" width="487" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ahora disminuimos a 85kb aprox, es decir, logramos reducir el tamaño de los Script Considerablemente!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_16507C4D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_22DE2969.png" width="489" height="295" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Como vez, con pequeños cambios podemos lograr optimizar nuestras aplicaciones existentes &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Sonrisa" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/wlEmoticon_2D00_smile_5F00_60F7441A.png" /&gt;, espero que te sirva!.    &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=189414" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_F300_n/default.aspx">Optimización</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category></item><item><title>Tip – RIOT , Optimizador Gratis de Imágenes para la Web</title><link>http://geeks.ms/blogs/gperez/archive/2010/12/03/tip-riot-optimizador-gratis-de-im-225-genes-para-la-web.aspx</link><pubDate>Fri, 03 Dec 2010 02:39:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:185541</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=185541</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=185541</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/12/03/tip-riot-optimizador-gratis-de-im-225-genes-para-la-web.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_480137FF.png"&gt;&lt;img height="88" width="540" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_60ECE277.png" alt="image" border="0" title="image" style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Hace un tiempo atr&amp;aacute;s he estado hablando de la optimizaci&amp;oacute;n de archivos JS, CSS , Image Sprites,&amp;nbsp; reducir los request, etc. Sin embargo, muchas veces ganamos algunas optimizaciones, pero se nos van al pozo al utilizar im&amp;aacute;genes de grandes tama&amp;ntilde;os.&lt;/p&gt;
&lt;p align="justify"&gt;Entonces para agregar un programa m&amp;aacute;s a la excelente lista confeccionada por Stephen Walther , de programas que deber&amp;iacute;as usar en su Post:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://stephenwalther.com/blog/archive/2010/11/22/10-essential-tools-for-building-asp-net-websites.aspx"&gt;http://stephenwalther.com/blog/archive/2010/11/22/10-essential-tools-for-building-asp-net-websites.aspx&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/08/18/tutorial-asp-net-el-nuevo-sprite-amp-image-optimization-framework.aspx"&gt;Sprite and Image Optimization Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx"&gt;Microsoft Ajax Minifier.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ySlow&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/06/02/elmah-m-243-dulo-de-error-loggina-para-asp-net.aspx"&gt;ELMAH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pingdom&lt;/li&gt;
&lt;li&gt;Host Tracker&lt;/li&gt;
&lt;li&gt;HTML Spell Checker&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/01/26/probando-microsoft-seo-toolkit-free.aspx"&gt;IIS SEO Toolkit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LinqPad&lt;/li&gt;
&lt;li&gt;NET Reflector&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;Ahora bien, quiero compartir este excelente software que encontr&amp;eacute;, se llama RIOT y nos permite actualizar las im&amp;aacute;genes. Cual es la gracia? es bastante extensible y gratis. &lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/wlEmoticon_2D00_smile_5F00_30765E01.png" alt="Sonrisa" class="wlEmoticon wlEmoticon-smile" style="border-style:none;" /&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Software como este, los utiliz&amp;aacute;bamos bastante hace un par de a&amp;ntilde;os, cuando la banda ancha no era &amp;ldquo;ancha&amp;rdquo;, pero hora debemos igualmente de preocuparnos por el peso de las im&amp;aacute;genes. LA imagen del ejemplo, pesa 50K, y luego de optimizarse 10k, 40K menos, nada de mal.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_4BAEB702.png"&gt;&lt;img height="316" width="429" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_1B943FB4.png" alt="image" border="0" title="image" style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Descarga este excelente software en : &lt;a href="http://luci.criosweb.ro/riot/download/"&gt;http://luci.criosweb.ro/riot/download/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pru&amp;eacute;balo, no te vas a arrepentir, jejeje. &lt;br /&gt;Saludos! &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=185541" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx">Tips</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category></item><item><title>[Tutorial] ASP.NET , El nuevo Sprite &amp; Image Optimization Framework </title><link>http://geeks.ms/blogs/gperez/archive/2010/08/18/tutorial-asp-net-el-nuevo-sprite-amp-image-optimization-framework.aspx</link><pubDate>Wed, 18 Aug 2010 05:56:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:180782</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>12</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=180782</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=180782</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/08/18/tutorial-asp-net-el-nuevo-sprite-amp-image-optimization-framework.aspx#comments</comments><description>&lt;p align="justify"&gt;Que tal? Vamos a revisar este nuevo release del Team de ASP.NET. Release que corresponde a un Framework de optimizaci&amp;oacute;n de im&amp;aacute;genes, que nos permite utilizar CSS Sprites&amp;nbsp; y base64 image inlining para hacer que nuestro sitio web cargue las im&amp;aacute;genes m&amp;aacute;s r&amp;aacute;pido.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lo primero , es que lo puedes descargar, junto a su documentaci&amp;oacute;n en:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://aspnet.codeplex.com/releases/view/50140" title="http://aspnet.codeplex.com/releases/view/50140"&gt;http://aspnet.codeplex.com/releases/view/50140&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;La siguiente gu&amp;iacute;a est&amp;aacute; basada en la documentaci&amp;oacute;n oficial del producto, al final vas a poder ver un video de como esto funciona. La documentaci&amp;oacute;n estaba en ingles, pero la traduje y aprovech&amp;eacute; de estudiar esta nueva herramienta, y quiero compartir lo que aprend&amp;iacute;.&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;T&amp;eacute;cnicas de optimizaci&amp;oacute;n de Im&amp;aacute;genes&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;CSS Sprites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si quieres saber m&amp;aacute;s sobre CSS Sprites visita este art&amp;iacute;culo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx" title="http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;&lt;a name="_Toc268701388"&gt;Image Inlining Using Base-64 Encoding&lt;/a&gt;&lt;/h5&gt;
&lt;p align="justify"&gt;Otra t&amp;eacute;cnica de optimizaci&amp;oacute;n para im&amp;aacute;genes es la denominada (la dejo en ingl&amp;eacute;s mejor)&amp;nbsp; image inlining. En esta t&amp;eacute;cnica, se embebe la data de la imagen (usando la codificaci&amp;oacute;n base-64) directamente en el HTML o en el CSS en lugar de hacer la referencia a la imagen como recurso externo. Cabe recordar que cuando es recurso externo, se realiza un request. Al integrar las im&amp;aacute;genes en el HTML o CSS, podemos reducir el n&amp;uacute;mero de request a las im&amp;aacute;genes en una p&amp;aacute;gina a cero (o a uno, dependiendo de si los datos de la imagen se encuentran en la misma p&amp;aacute;gina o en una hoja de estilos referenciada).El total del contenido se puede descargar en un resquest.&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_6CE90BE0.png"&gt;&lt;img height="253" width="518" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_753CBB6A.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desventajas el Inlining Images&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si bien esta t&amp;eacute;cnica nos permite optimizar bastante el tema de la carga de im&amp;aacute;genes en nuestro sitio, tiene algunas desventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Soporte del Browser&lt;/strong&gt;, ya que no todos los browser lo soportan , de hecho podr&amp;iacute;amos decir que la mayor&amp;iacute;a, hasta ahora, no lo soporta, para darnos una idea, IE8 lo soporta y las nuevas versiones, tambi&amp;eacute;n FireFox desde la versi&amp;oacute;n 3.5 &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Tama&amp;ntilde;o m&amp;aacute;s grande de las im&amp;aacute;genes&lt;/strong&gt;, estas al estar codificadas en base-64, su tama&amp;ntilde;o se incrementa, hasta un 40% m&amp;aacute;s del tama&amp;ntilde;o original. &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Cache, ya que los browser no cachean im&amp;aacute;genes encodeadas&lt;/strong&gt; en base-64, si estas est&amp;aacute;n encodeadas directamente en el HTML, sin embargo, si est&amp;aacute;n n un archivo externo CSS, si funciona l cache. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Comparaci&amp;oacute;n entre Sprites e Inlining Images&lt;/strong&gt;&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Tag img normal&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Sprites&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Base-64 Inlining&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Alto numero de request, uno por cada imagen de la p&amp;aacute;gina&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Numero de Request HTTP Moderados (uno para el archivo RSS y otro para el Sprite)&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Bajo n&amp;uacute;mero de request (solo uno, para el archivo CSS)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Tama&amp;ntilde;o de archivo moderado&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Tama&amp;ntilde;o peque&amp;ntilde;o de archivo, se ahorra espacio al tener una sola imagen que contiene a todas.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Tama&amp;ntilde;o de archivo mayor al estar codificado en base-64&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Compatible con todos los Browsers&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Compatible con todos los Browsers actuales.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="213" valign="top"&gt;
&lt;p&gt;Solo compatible con las ultimas versiones de browser basados en&amp;nbsp; WebKit y Mozilla &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Optimizaci&amp;oacute;n de Im&amp;aacute;genes en ASP.NET&lt;/h4&gt;
&lt;p align="justify"&gt;Para usar images Sprites en Web Forms, podemos utilizar el nuevo control SpriteImage, este control funciona de manera similar al control Image que ya conoc&amp;iacute;amos, pero automatiza totalmente la tarea de desplegar las im&amp;aacute;genes optimizadas con la t&amp;eacute;cnica CSSS Sprite. Adem&amp;aacute;s , podemos utilizar los sprites creados por este control en p&amp;aacute;ginas HTML Standars (como elementos img), o ya sea utilizando helpers&amp;nbsp; ImageSprite.Image para MVC o para Razor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instalando y Configurando el ASP.NET Image Optimizaci&amp;oacute;n Framework&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Para agregar la funcionalidad a nuestro sitio, debemos agregar las DLL al proyecto y referenciar al ensamblado &lt;i&gt;ImageOptimizationFramework. &lt;/i&gt;Los sitios Web Form (ASP.NET Tradicional), adem&amp;aacute;s deben referenciar el ensamblado &lt;em&gt;WebFormsControl&lt;/em&gt;. Para los sitios que utilizan MVC y Razor deben referenciar al ensamblado &lt;em&gt;MVCHelper &lt;/em&gt;para tener acceso al helper ImageSprite.Image.&lt;/p&gt;
&lt;p&gt;La siguiente imagen resume lo anterior:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_3E9EEA59.png"&gt;&lt;img height="184" width="480" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_4883DBC4.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;El ensamblado &lt;i&gt;ImageOptimizationFramework &lt;/i&gt;incluye un m&amp;oacute;dulo que se debe ejecutar cuando la aplicaci&amp;oacute;n se inicia, para habilitar este m&amp;oacute;dulo, agregamos en el Web.config:&lt;/p&gt;
&lt;p&gt;Para II6&lt;/p&gt;
&lt;p&gt;
&lt;span lang="EN-CA" style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;httpModules&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-CA" style="color:blue;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;add&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt; =&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Microsoft.Samples.Web.ImageOptimizationModule&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA" style="color:blue;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-CA" style="color:red;"&gt;name&lt;/span&gt;&lt;span lang="EN-CA" style="color:blue;"&gt; =&lt;/span&gt;&lt;span lang="EN-CA"&gt;&amp;quot;&lt;span style="color:blue;"&gt;Microsoft.Samples.Web.ImageOptimizationModule&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-CA" style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-CA"&gt;httpModules&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;?xml:namespace prefix = o /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;p&gt;Para II7&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;"&gt;system.webServer&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;"&gt;modules&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt; &lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;"&gt;runAllManagedModulesForAllRequests&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;=&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;"&gt;add&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt; &lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;"&gt;type&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;=&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;Microsoft.Samples.Web.ImageOptimizationModule&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;"&gt;name&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt; =&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;Microsoft.Samples.Web.ImageOptimizationModule&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;"&gt;modules&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;"&gt;system.webServer&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preparar las Im&amp;aacute;genes para la Optimizaci&amp;oacute;n&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Para usar CSS Sprites, se debe agregar las im&amp;aacute;genes al sitio en una carpeta espec&amp;iacute;fica. Opcionalmente podemos configurar opciones para el Sprite mediante un archivo XML.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agregar im&amp;aacute;genes a la Carpeta App_Sprites&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Todos los im&amp;aacute;genes deben ser agregadas a la carpeta &lt;em&gt;App_Sprites,&lt;/em&gt; que debe estar por debajo de la ra&amp;iacute;z del sitio. Esta carpeta puede incluir Sub Carpetas. Para este post estoy utilizando las im&amp;aacute;genes del ejemplo que viene por defecto (y en la documentaci&amp;oacute;n oficial) &lt;br /&gt;Ej:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_1F98C6BB.png"&gt;&lt;img height="320" width="283" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_653D50D9.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En tiempo de ejecuci&amp;oacute;n, las im&amp;aacute;genes en casa subcarpeta se fusionan autom&amp;aacute;ticamente en Sprites o embebido directamente en archivos CSS (que son creados por el paquete de optimizaci&amp;oacute;n), dependiendo como se ha configurado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Configuraci&amp;oacute;n las opciones de Optimizaci&amp;oacute;n&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Podemos sobrescribir la configuraci&amp;oacute;n por defecto creando el archivo &lt;em&gt;settings.xml&lt;/em&gt;. Este archivo lo podemos crear en la carpeta App_Sprites o en cada subcarpeta que contiene los image sprites. Si una subcarpeta no contiene el archivo settings.xml, entonces esta hereda la configuraci&amp;oacute;n desde el archivo settings.xml de la carpeta padre (si es que existe, o si no se utiliza la configuraci&amp;oacute;n por defecto).&lt;/p&gt;
&lt;p&gt;En el archivo settings,xml, podemos setear los siguientes elementos:&lt;/p&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;FileFormat&lt;/strong&gt;: Esto controla el formato de la imagen del sprite generado. Las Opciones son JPG, GIF, PNG y BMP.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Calidad&lt;/strong&gt;: Controla el nivel de compresi&amp;oacute;n&amp;nbsp; del resultando del sprite. El valor se especifica como un entero que representa el porcentaje de compresi&amp;oacute;n&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;MazSize&lt;/strong&gt;: Esto determina el tama&amp;ntilde;o m&amp;aacute;ximo (en KB) para el image sprite. Si el tama&amp;ntilde;o del combinado de im&amp;aacute;genes en una carpeta&amp;nbsp; excede este valor, entonces se crear&amp;aacute;n multiples sprites autom&amp;aacute;ticamente y ser&amp;aacute; transparente la referencia&amp;nbsp; a trav&amp;eacute;s de un solo archivo CSS.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;BackgroundColor&lt;/strong&gt;: Define el color de fondo de image sprite, incluyendo transparencia. Se especifica en el formato est&amp;aacute;ndar ARGB. Esta configuraci&amp;oacute;n se suele utilizar cuando se agregan&amp;nbsp; im&amp;aacute;genes PNG transparentes a un sprite que se va a generar en un formato que no admite la transparencia.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;strong&gt;Base64Encoding&lt;/strong&gt;: Esto habilita o deshabilita el Base64Encoding. Incluso si esta opci&amp;oacute;n est&amp;aacute; activada, los sprites se producir&amp;aacute;n por compatibilidad con navegadores que no soportan im&amp;aacute;genes en l&amp;iacute;nea)&lt;/div&gt;
&lt;p&gt;El siguiente ejemplo muestra el contendido de un archivo setting,xml, que refleja la configuraci&amp;oacute;n por defecto.&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-CA"&gt;&amp;lt;?&lt;span style="color:#a31515;"&gt;xml&lt;/span&gt; &lt;span style="color:red;"&gt;version&lt;/span&gt;=&amp;quot;1.0&amp;quot; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;ImageOptimizationSettings&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;FileFormat&lt;/span&gt;&amp;gt;png&amp;lt;/&lt;span style="color:#a31515;"&gt;FileFormat&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;Base64Encoding&lt;/span&gt;&amp;gt;true&amp;lt;/&lt;span style="color:#a31515;"&gt;Base64Encoding&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;Quality&lt;/span&gt;&amp;gt;80&amp;lt;/&lt;span style="color:#a31515;"&gt;Quality&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;BackgroundColor&lt;/span&gt;&amp;gt;00000000&amp;lt;/&lt;span style="color:#a31515;"&gt;BackgroundColor&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;span style="color:#a31515;"&gt;MaxSize&lt;/span&gt;&amp;gt;500&amp;lt;/&lt;span style="color:#a31515;"&gt;MaxSize&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&amp;lt;/&lt;span style="color:#a31515;"&gt;ImageOptimizationSettings&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notar lo&amp;nbsp; siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;El elemento &lt;strong&gt;Quality &lt;/strong&gt;es redundante para el ejemplo, debido a que es ignorado cuando el output de formato&amp;nbsp; de salida seleccionado es png.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Si se especifica un formato de salida que no es reconocido , el defecto es PNG &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;El valor BackgroundColor es ignorado para las im&amp;aacute;genes Base-64&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&amp;iquest;Como funciona ASP.NET Image Optimization?&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitoreo de la carpeta APP_Sprites para detecci&amp;oacute;n de Cambios&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;El m&amp;oacute;dulo &lt;i&gt;ImageOptimizationModule&amp;nbsp; &lt;/i&gt;se ejecuta durante la&amp;nbsp; fase de carga inicial&amp;nbsp; de la aplicaci&amp;oacute;n ASP.NET e implementa el framework de optimizaci&amp;oacute;n propiamente tal. Agrega un cache de dependencia a la carpeta App_Sprites y a todas las subcarpetas(si es que existen). Si el contenido de alguna de estas subcarpetas cambia, el framework de optimizaci&amp;oacute;n hace lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Si una imagen o archivo de configuraci&amp;oacute;n es agregado, eliminado o modificado, o la carpeta se vuelve a generar, se creara una nueva imagen&amp;nbsp; y archivo css. Si las subcarpetas no tienen un archivo settings.xml, ser&amp;aacute; reconstruido, debido a que sus valores heredados pudieron haber cambiado.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Si una carpeta se agrega, se agrega tambi&amp;eacute;n un elemento a la cache &lt;/li&gt;
&lt;li&gt;Si una carpeta es eliminada, se elimina tambi&amp;eacute;n de la cache &lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;Adicionalmente, un archivo llamado timestamp.dat es utilizado para comprobar si la carpeta tiene que ser reconstruida (img y css) cuando se inicia la aplicaci&amp;oacute;n. Si este archivo no ha cambiado cuando se reinicia la aplicaci&amp;oacute;n, entonces no hay que reconstruir todo la carpeta App_Sprites, proceso que puede hacer uso intensivo de CPU y Disco.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Como son desplegadas las im&amp;aacute;genes por el control Built-In?&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Los Sprites y las inlined images son redenderizadas usando CSS IDs o clases, las cuales se asocian a los elementos de la pagina como los div, span,a ,p e img. Puesto que el fin es optimizar la carga de im&amp;aacute;genes, y que la mejora se siga tratando como im&amp;aacute;genes vs el CSS, el control para WebForm y las funciones Helpers hace que estas im&amp;aacute;genes utilice una imagen GIF cuyas caracter&amp;iacute;sticas son transparente y de 1x1 p&amp;iacute;xeles. (Codificada en el atributo scr), y luego se usan las clases CSS para mostrar la imagen correcta.&lt;/p&gt;
&lt;p&gt;El siguiente ejemplo muestra el c&amp;oacute;digo generado al redenderizar:&lt;/p&gt;
&lt;span lang="EN-CA"&gt;&amp;lt;&lt;span style="color:maroon;"&gt;img&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;=&amp;quot;aspNetLogos_2-png&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:red;"&gt;src&lt;/span&gt;=&amp;quot;data:image/gif;base64,R0lGODlhAQABAIABAP///&lt;br /&gt;wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&amp;quot; /&amp;gt;&lt;/span&gt;




&lt;pre&gt;&lt;/pre&gt;
&lt;span lang="EN-CA"&gt;&lt;/span&gt;




&lt;pre&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;Para asegurar la compatibilidad Cross Browser, el framework de optimizaci&amp;oacute;n genera dos archivos CSS: highCompact.css, el cual permite el uso de images inline(si es que lo estamos utilizando), y lowCompat.css, que permite solo image Sprites. Para que la referencia correctamente, se debe vincular la hoja de estilo se debe vincular en el head de la p&amp;aacute;gina. El siguiente ejemplo muestra un link a la hoja de estilos que es compatible con todos los navegadores (esto es, que utiliza CSS Sprites)&lt;/p&gt;
&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="htmlelm1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;link&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="htmlatr1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;href&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="htmlval1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;&amp;quot;App_Sprites/aspNetLogos/lowCompat.css&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="htmlatr1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;rel&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="htmlval1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;&amp;quot;stylesheet&amp;quot;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="htmlatr1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="htmlval1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="htmlatr1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;media&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="htmlval1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt;&amp;quot;all&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="htmltag1"&gt;&lt;span lang="EN-CA" style="font-family:consolas;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;




&lt;pre&gt;&lt;/pre&gt;
&lt;h4&gt;Agregar las im&amp;aacute;genes optimizadas a la P&amp;aacute;gina.&lt;/h4&gt;
&lt;p align="justify"&gt;El enfoque o la forma que se utiliza para aprovechar la ventaja de las im&amp;aacute;genes optimizadas en una p&amp;aacute;gina web depende de si se est&amp;aacute; utilizando un WebForm, una vista de MVC o Razor, o incluso, si se quiere crear manualmente y agregar los tags de forma manual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Control para ASP.NET Web Forms&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para usar la optimizaci&amp;oacute;n de im&amp;aacute;genes in ASP.NET Web Forms, agregamos el control &lt;strong&gt;SpriteImage, &lt;/strong&gt;la sintaxis ser&amp;iacute;a algo como:&lt;/p&gt;
&lt;span lang="EN-CA"&gt;&amp;lt;&lt;span style="color:maroon;"&gt;SpriteImage&lt;/span&gt;:&lt;span style="color:maroon;"&gt;SpriteImage&lt;/span&gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;=&amp;quot;SpriteImage3&amp;quot; &lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;=&amp;quot;server&amp;quot; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="color:red;"&gt;ImageUrl&lt;/span&gt;=&amp;quot;~/App_Sprites/aspNetLogos/2.png&amp;quot; &lt;/span&gt;&lt;span lang="EN-CA"&gt;&lt;span style="color:red;"&gt;Optimize&lt;/span&gt;=&amp;quot;true&amp;quot; /&amp;gt;&lt;/span&gt;




&lt;pre&gt;&lt;/pre&gt;
&lt;span lang="EN-CA"&gt;&lt;/span&gt;




&lt;pre&gt;&lt;/pre&gt;
&lt;p align="justify"&gt;Podemos setear la propiedad &lt;strong&gt;ImageUrl &lt;/strong&gt;a la imagen sin optimizar en la carpeta App_Sprites, y adicionalmente setear la propiedad Optimize a true. Cuando la pagina se renderiza el&amp;nbsp; framework de optimizaci&amp;oacute;n agrega&amp;nbsp; el link de referencia al CSS apropiado en la cabecera de la p&amp;aacute;gina y procesa la imagen adecuada para la opci&amp;oacute;n elegida.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Helper ASP.NET MVC y Razor&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Para usar la optimizaci&amp;oacute;n en vistas MVC o p&amp;aacute;ginas Razor, debemos agregar dos helpers, uno para procesar el link al archivo CSS en la vista, y el otro para renderizar la imagen en la p&amp;aacute;gina. Para lo primero, agregamos el siguiente helper en el tag head.&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-CA" style="font-family:consolas;background:yellow;font-size:9.5pt;mso-highlight:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;:&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:consolas;font-size:9.5pt;"&gt; Microsoft.Samples.Web.&lt;span style="color:#2b91af;"&gt;ImageSprite&lt;/span&gt;.ImportStylesheet(&lt;span style="color:#a31515;"&gt;&amp;quot;~/App_Sprites/&amp;quot;&lt;/span&gt;) &lt;span style="background:yellow;mso-highlight:yellow;"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;span lang="EN-CA" style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="background:yellow;mso-highlight:yellow;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;/span&gt;El m&amp;eacute;todo &lt;b&gt;ImageSprite.ImportStylesheet &lt;/b&gt;genera el HTML requerido para crear el link apropiado al CSS, seg&amp;uacute;n la compatibilidad del browser.Para las aplicaciones MVC, debemos pasar esto al header, t&amp;iacute;picamente utilizando un elemento ContentPlaceHolder, al estar utilizando MasterPages.Para insertar la imagen en la vista mvc o razor, usamos el helper ImageSprite.Image como el siguiente ejemplo:&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-CA" style="font-family:consolas;background:yellow;font-size:9.5pt;mso-highlight:yellow;"&gt;&amp;lt;%&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;:&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:consolas;font-size:9.5pt;"&gt; Microsoft.Samples.&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:consolas;mso-bidi-font-size:9.5pt;"&gt;Web&lt;/span&gt;&lt;span lang="EN-CA" style="font-family:consolas;font-size:9.5pt;"&gt;.&lt;span style="color:#2b91af;"&gt;ImageSprite&lt;/span&gt;.Image(&lt;span style="color:#a31515;"&gt;&amp;quot;~/App_Sprites/myImage.jpg&amp;quot;&lt;/span&gt;) &lt;/span&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;Ahora el video&lt;/h4&gt;
&lt;embed src="http://www.youtube.com/v/NH4mCIsQlTA?fs=1&amp;amp;hl=en_US" width="480" height="385"&gt;&lt;/embed&gt;
&lt;p&gt;Como siempre, espero que te sirva! &lt;br /&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;
&lt;/li&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=180782" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx">Ninja Web</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category></item><item><title>Material Charla Mejores Prácticas en el Desarrollo de Sitios Web &amp; ASP.NET Ajax</title><link>http://geeks.ms/blogs/gperez/archive/2010/07/23/material-charla-mejores-pr-225-cticas-en-el-desarrollo-de-sitios-web-amp-asp-net-ajax.aspx</link><pubDate>Fri, 23 Jul 2010 15:59:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:179752</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=179752</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=179752</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/07/23/material-charla-mejores-pr-225-cticas-en-el-desarrollo-de-sitios-web-amp-asp-net-ajax.aspx#comments</comments><description>&lt;p align="justify"&gt;Ayer jueves 22/07 tuve la oportunidad de participar como Orador en la charla Mejores Pr&amp;aacute;cticas en el Desarrollo del Sitios Web &amp;amp; ASP.NET Ajax &amp;amp; Nuevas Funcionalidades en ASP.NET 4 junto a Juan Carlos Olamendy, un t&amp;iacute;tulo Bastante Largo para una agenda tambi&amp;eacute;n extensa. Estoy muy contento ya que recibimos buenos comentarios sobre la charla, las preguntas estuvieron muy buenas, y hubo espacio para discusi&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_70A7FD41.png"&gt;&lt;img height="284" width="378" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_1FC9C30C.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AGENDA:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_7DFDEA7A.png"&gt;&lt;img height="288" width="381" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_238767DC.png" alt="image" border="0" title="image" class="wlDisabledImage" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Ya est&amp;aacute;n subiendo al sitio de Comunidades T&amp;eacute;cnicas la grabaci&amp;oacute;n de ayer &lt;a href="http://www.facebook.com/ComunidadesMS" title="http://www.facebook.com/ComunidadesMS"&gt;http://www.facebook.com/ComunidadesMS&lt;/a&gt;&amp;nbsp; (si no est&amp;aacute; ahora, durante el d&amp;iacute;a deber&amp;iacute;a), te recomiendo que te hagas fan de esa manera siempre vas a estar actualizado con los eventos. &lt;br /&gt;&lt;br /&gt;Creo que Juan Carlos va a subir tambi&amp;eacute;n los ejemplos, por mi parte te dejo la PPT&amp;nbsp; y links de mi sitio que est&amp;aacute;n relacionados con lo que vimos ayer:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;PPTX:&lt;/strong&gt; &lt;br /&gt;&lt;a href="http://cid-053a660afa3473b3.office.live.com/view.aspx/P%c3%bablico/Charla22.pptx" title="http://cid-053a660afa3473b3.office.live.com/view.aspx/P%c3%bablico/Charla22.pptx"&gt;http://cid-053a660afa3473b3.office.live.com/view.aspx/P%c3%bablico/Charla22.pptx&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;LINKS:&lt;/strong&gt;&lt;/p&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx"&gt;Optimizando tu Web con CSS SPrites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/01/02/microsoft-ajax-cdn-mejoras-de-rendimiento-a-considerar.aspx"&gt;Utilizar Microsoft Ajax CDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/01/02/microsoft-ajax-cdn-mejoras-de-rendimiento-a-considerar.aspx"&gt;Minificar los archivos JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/06/04/scriptreferenceprofiler-compositescript-y-pensando-por-que-no-lo-ocupe-antes-optimizaci-243-n-de-request-de-javasscripts.aspx"&gt;CompositeScript &amp;ndash; Combinar para optimizar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/09/15/asp-net-4-0-mejora-para-los-motores-de-b-250-squeda-meta-tag-y-descripci-243-n.aspx"&gt;Mejora para los motores de B&amp;uacute;squeda (ASP.NET 4)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/09/15/asp-net-4-0-mejora-para-los-motores-de-b-250-squeda-meta-tag-y-descripci-243-n.aspx"&gt;Mejorar el rendimiento optimizando los ViewState (ASP.NET 4)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/06/13/asp-net-ajax-library-introducci-243-n-a-las-nuevas-plantillas-client-side.aspx"&gt;Nuevas Plantillas en el Cliente con Jquery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/06/02/tutorial-introducci-243-n-al-nuevo-scriptloader-de-asp-net-ajax-library.aspx"&gt;[Tutorial]Introducci&amp;oacute;n al nuevo ScriptLoader de ASP.NET AJAX Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/04/07/tips-asp-net-4-comprime-las-variables-de-session-para-webfarm.aspx"&gt;[Tips] ASP.NET 4 Comprime las variables de Session (Para WebFarm)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/04/02/tips-asp-net-4-extensible-request-validation-con-ejemplo.aspx"&gt;[Tips] ASP.NET 4 &amp;ndash; Extensible Request Validation, con ejemplo.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-clientidmode.aspx"&gt;[ScreenCast] ASP.NET 4.0 &amp;ndash; ClientIDMode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-viewstatemode.aspx"&gt;[ScreenCast] ASP.NET 4.0 &amp;ndash; ViewStateMode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-routing.aspx"&gt;[ScreenCast] ASP.NET 4.0 &amp;ndash; Routing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/03/14/screencast-asp-net-4-0-redirectpermanent.aspx"&gt;[ScreenCast] ASP.NET 4.0 &amp;ndash; RedirectPermanent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2009/09/15/asp-net-4-0-mejora-para-los-motores-de-b-250-squeda-meta-tag-y-descripci-243-n.aspx"&gt;[ASP.NET 4.0] Mejora para los Motores de B&amp;uacute;squeda- Meta Tag y Descripci&amp;oacute;n.&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;Espero que te sirvan los links, nos vemos! &lt;br /&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=179752" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/ScreenCast/default.aspx">ScreenCast</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/javascript/default.aspx">javascript</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category></item><item><title>Material Charla - Técnicas Ninja de Optimización Web</title><link>http://geeks.ms/blogs/gperez/archive/2010/05/15/material-chala-t-233-cnicas-ninja-de-optimizaci-243-n-web.aspx</link><pubDate>Sat, 15 May 2010 04:45:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:176834</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=176834</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=176834</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/05/15/material-chala-t-233-cnicas-ninja-de-optimizaci-243-n-web.aspx#comments</comments><description>&lt;p&gt;Hola, quiero dar las gracias por los buenos comentarios que recib&amp;iacute; por la charla sobre tips de optimizaci&amp;oacute;n.&amp;nbsp; Como me compromet&amp;iacute;, comparto la presentaci&amp;oacute;n:&lt;/p&gt;
&lt;div id="__ss_4105367" style="width:425px;height:350px;"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cfakepathoptimizacion-100514232152-phpapp01&amp;amp;stripped_title=cfakepathoptimizacion" width="425" name="__sse4105367" height="355"&gt;&lt;/embed&gt;
&lt;div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Sobre HTTP Watch: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/04/20/tips-debug-de-mejor-manera-con-ie8-y-http-watch.aspx" title="http://geeks.ms/blogs/gperez/archive/2010/04/20/tips-debug-de-mejor-manera-con-ie8-y-http-watch.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2010/04/20/tips-debug-de-mejor-manera-con-ie8-y-http-watch.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sobre CSS Sprite:&lt;/strong&gt; &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx" title="http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sobre Ajax Minifier: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx" title="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sobre CompositeScript + ScriptRefenceProfiler:&lt;/strong&gt; &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/06/04/scriptreferenceprofiler-compositescript-y-pensando-por-que-no-lo-ocupe-antes-optimizaci-243-n-de-request-de-javasscripts.aspx" title="http://geeks.ms/blogs/gperez/archive/2009/06/04/scriptreferenceprofiler-compositescript-y-pensando-por-que-no-lo-ocupe-antes-optimizaci-243-n-de-request-de-javasscripts.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2009/06/04/scriptreferenceprofiler-compositescript-y-pensando-por-que-no-lo-ocupe-antes-optimizaci-243-n-de-request-de-javasscripts.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://cid-053a660afa3473b3.skydrive.live.com/self.aspx/P%c3%bablico/CharlaOptimizacion.zip"&gt;&lt;strong&gt;Descargar los ejemplos de la Charla:&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Saludos! &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=176834" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Eventos/default.aspx">Eventos</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx">Ninja Web</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category></item><item><title>[Noticia] Ajax Minifier 4.0 Release, y con soporte de minificar los CSS! :)</title><link>http://geeks.ms/blogs/gperez/archive/2010/02/16/noticia-ajax-minifier-4-0-release-y-con-soporte-de-minificar-los-css.aspx</link><pubDate>Tue, 16 Feb 2010 19:42:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:167530</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=167530</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=167530</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/02/16/noticia-ajax-minifier-4-0-release-y-con-soporte-de-minificar-los-css.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://aspnet.codeplex.com/"&gt;&lt;img src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=aspnet&amp;amp;DownloadId=47571&amp;amp;Build=16271" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hace un tiempo escrib&amp;iacute; el art&amp;iacute;culo: &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx" title="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx&lt;/a&gt; &amp;lt;-que buen art&amp;iacute;culo! jejeje&lt;/p&gt;
&lt;p align="justify"&gt;En donde ense&amp;ntilde;aba a minificar los archivos JS a partir de la herramienta Microsoft Ajax Minifier, la buena noticia es que ahora, est&amp;aacute; el Release 4.0 &lt;strong&gt;y que trae como novedad el soporte para la&amp;nbsp; minificaci&amp;oacute;n de nuestros CSS.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La Minificaci&amp;oacute;n por Defecto de CSS Permite:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remover todos los espacios en blanco que no son relevantes&lt;/li&gt;
&lt;li&gt;Remover todos los comentarios&lt;/li&gt;
&lt;li&gt;Remover los punto y comas innecesarios&lt;/li&gt;
&lt;li&gt;Reducir el c&amp;oacute;digo de color (por un equivalente,obvio)&lt;/li&gt;
&lt;li&gt;Reducir representaciones de enteros, eliminando los ceros iniciales y finales.&lt;/li&gt;
&lt;li&gt;Remover los especificadores de unidad que tienen valor Cero&lt;/li&gt;
&lt;li&gt;Utilizar nombres de colores&amp;nbsp; basados estrictamente en&amp;nbsp; W3C para reducir a&amp;uacute;n m&amp;aacute;s el c&amp;oacute;digo resultante&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y donde puedes conseguir esta herramienta: &lt;br /&gt;&lt;strong&gt;Descarga: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://aspnet.codeplex.com/releases/view/40584" title="http://aspnet.codeplex.com/releases/view/40584"&gt;http://aspnet.codeplex.com/releases/view/40584&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Introducci&amp;oacute;n: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx" title="http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx"&gt;http://geeks.ms/blogs/gperez/archive/2009/11/17/tutoturial-microsoft-ajax-minifier-optimiza-tus-archivos-javascript.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Documentaci&amp;oacute;n completa: &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx" title="http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx"&gt;http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Espero que te sea de utilidad, esta muy bueno! &lt;br /&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167530" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx">Ninja Web</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Noticia/default.aspx">Noticia</category></item><item><title>ASP.NET 4.0 El nuevo RedirectPermanent, otra mejora para los SEO</title><link>http://geeks.ms/blogs/gperez/archive/2010/02/12/asp-net-4-0-el-nuevo-redirectpermanent-otra-mejora-para-los-seo.aspx</link><pubDate>Fri, 12 Feb 2010 14:12:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:167247</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=167247</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=167247</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/02/12/asp-net-4-0-el-nuevo-redirectpermanent-otra-mejora-para-los-seo.aspx#comments</comments><description>&lt;p align="justify"&gt;Para comenzar a hablar sobre este nuevo m&amp;eacute;todo de la Clase response, tenemos que hablar sobre como funciona el cl&amp;aacute;sico Responde.Redirect.Cuando utilizamos Response.redirect se indica a nuestro server que haga una &lt;strong&gt;redirecci&amp;oacute;n temporal&lt;/strong&gt; a la nueva URL (genera una respuesta HTTP 302) esto no tiene incidencia para el usuario que navega nuestra p&amp;aacute;gina, pero los motores de b&amp;uacute;squeda asumen que solo es un cambio de URL temporal y no actualizaran sus &amp;iacute;ndices.Existe con ASP.NET 4.0 el m&amp;eacute;todo &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent(VS.100).aspx"&gt;Redirectpermanent&lt;/a&gt; que nos va a generar una respuesta HTTP 301, (redirecci&amp;oacute;n permanente) que le indica a los SEO que es la nueva URL a indexar.&lt;br /&gt;Pero veamos un ejemplo pr&amp;aacute;ctico, vamos a tener una aplicaci&amp;oacute;n que utilice los dos m&amp;eacute;todos (redirect y redirectPermanent) y vamos a ver con Firebug es el resultado de la ejecuci&amp;oacute;n de ambos.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_3AE583C3.png"&gt;&lt;img height="352" width="536" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_7F457502.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;y el c&amp;oacute;digo&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt;) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; Button1.Click &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Redirect(&lt;span style="color:#a31515;"&gt;&amp;quot;destino.aspx&amp;quot;&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; Button2_Click(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt;) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; Button2.Click &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.RedirectPermanent(&lt;span style="color:#a31515;"&gt;&amp;quot;destino.aspx&amp;quot;&lt;/span&gt;) &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:consolas;font-size:9.5pt;mso-ansi-language:en-us;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Todo listo , entonces &amp;hellip; &lt;br /&gt;Presionando el Primer Bot&amp;oacute;n (HTTP 302) , con response.redirect:&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_6FC26333.png"&gt;&lt;img height="442" width="535" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5581FA0F.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Presionando el Segundo Bot&amp;oacute;n (HTTP 301) , con response.redirectPermanent:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_4CB1F1C3.png"&gt;&lt;img height="446" width="532" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_605EDB57.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Esto es mucho &amp;ldquo;mejor recibido&amp;rdquo; por los SEO de los motores de b&amp;uacute;squeda como Bing o Google, entonces para tener en cuenta esta mejora :).&lt;/p&gt;
&lt;p&gt;El Maestro &lt;strong&gt;Ibon Landa&lt;/strong&gt; tambi&amp;eacute;n escribi&amp;oacute; sobre esto en su blog: &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/ilanda/archive/2010/01/26/m-233-todo-response-redirectpermanent.aspx" title="http://geeks.ms/blogs/ilanda/archive/2010/01/26/m-233-todo-response-redirectpermanent.aspx"&gt;http://geeks.ms/blogs/ilanda/archive/2010/01/26/m-233-todo-response-redirectpermanent.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tambi&amp;eacute;n&lt;strong&gt; Eduard Tomas&lt;/strong&gt; escribi&amp;oacute; sobre esto enfocado a MVC: &lt;br /&gt;&lt;a href="http://geeks.ms/blogs/etomas/archive/2010/02/10/asp-net-mvc-redirecciones-permanentes.aspx" title="http://geeks.ms/blogs/etomas/archive/2010/02/10/asp-net-mvc-redirecciones-permanentes.aspx"&gt;http://geeks.ms/blogs/etomas/archive/2010/02/10/asp-net-mvc-redirecciones-permanentes.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y un completo articulo sobre las diferencias de ambos m&amp;eacute;todos HTTP en: &lt;br /&gt;&lt;a href="http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/" title="http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/"&gt;http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Espero que te sirva :) &lt;br /&gt;Saludos, &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167247" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category></item><item><title>Resumen de Post de Optimización Web – Chaloptimaze!</title><link>http://geeks.ms/blogs/gperez/archive/2010/01/13/resumen-de-post-de-optimizaci-243-n-web-chaloptimaze.aspx</link><pubDate>Wed, 13 Jan 2010 17:25:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:164938</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=164938</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=164938</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/01/13/resumen-de-post-de-optimizaci-243-n-web-chaloptimaze.aspx#comments</comments><description>&lt;table width="604" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="126" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_41DA945D.png"&gt;&lt;img height="80" width="102" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_63D2CA56.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="476" valign="top"&gt;
&lt;p&gt;Hola, ya que algunos me han preguntado &amp;ldquo;tienes alg&amp;uacute;n tip de optimizaci&amp;oacute;n&amp;rdquo; voy a publicar un peque&amp;ntilde;o resumen de algunos de los post m&amp;aacute;s relevantes sobre este tema que he realizado. Obviamente todav&amp;iacute;a estoy en deuda y es en esta &amp;eacute;poca del a&amp;ntilde;o en donde puedo escribir m&amp;aacute;s post, as&amp;iacute; que pr&amp;oacute;ximamente &amp;hellip; m&amp;aacute;s tips de optimizaci&amp;oacute;n!&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Dejo entonces algunos links de este humilde blog:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx"&gt;Optimizando tu Web con CSS SPrites&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/01/02/microsoft-ajax-cdn-mejoras-de-rendimiento-a-considerar.aspx"&gt;Utilizar Microsoft Ajax CDN&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2010/01/02/microsoft-ajax-cdn-mejoras-de-rendimiento-a-considerar.aspx"&gt;Minificar los archivos JavaScript&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2009/06/04/scriptreferenceprofiler-compositescript-y-pensando-por-que-no-lo-ocupe-antes-optimizaci-243-n-de-request-de-javasscripts.aspx"&gt;CompositeScript &amp;ndash; Combinar para optimizar&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2009/09/15/asp-net-4-0-mejora-para-los-motores-de-b-250-squeda-meta-tag-y-descripci-243-n.aspx"&gt;Mejora para los motores de B&amp;uacute;squeda (ASP.NET 4)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="http://geeks.ms/blogs/gperez/archive/2009/09/15/asp-net-4-0-mejora-para-los-motores-de-b-250-squeda-meta-tag-y-descripci-243-n.aspx"&gt;Mejorar el rendimiento optimizando los ViewState (ASP.NET 4)&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Saludos! &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=164938" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx">Tips</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Tutorial/default.aspx">Tutorial</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx">Ninja Web</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Patrones+de+Dise_26002300_241_3B00_o/default.aspx">Patrones de Dise&amp;#241;o</category></item><item><title>Optimizando tu Website con CSS Sprites, caso práctico</title><link>http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx</link><pubDate>Mon, 04 Jan 2010 04:12:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:164191</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/rsscomments.aspx?PostID=164191</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/gperez/commentapi.aspx?PostID=164191</wfw:comment><comments>http://geeks.ms/blogs/gperez/archive/2010/01/04/optimizando-tu-website-con-css-sprites-caso-pr-225-ctico.aspx#comments</comments><description>&lt;p align="justify"&gt;Una de las Reglas de Oro en el temas de performance, tiene que ver con tratar de disminuir la cantidad de HTTP Request de nuestro sitio web. Para ser m&amp;aacute;s claro, cada vez que se carga una imagen, un archivo Js, un archivo flash, un css, etc, existe una petici&amp;oacute;n al servidor, y como en toda petici&amp;oacute;n hay un proceso de conexi&amp;oacute;n, solicitud y recepci&amp;oacute;n que tiene un costo asociado, sumado a que existen cabeceras por cada petici&amp;oacute;n, no es lo mismo tener que descargar 1 archivo de 100Kb que 10 de 10Kb , ya que este &amp;uacute;ltimo caso, va a tomar m&amp;aacute;s de 100Kb para su descarga ( y sum&amp;eacute;mosle el tiempo asociado).&lt;/p&gt;
&lt;p align="justify"&gt;Es aqu&amp;iacute; en donde nos sirven los CCS Sprites, la idea es similar a la Tabla Ouija, en donde tenemos una &amp;ldquo;tabla&amp;rdquo; con todos los s&amp;iacute;mbolos que necesitamos y apuntamos a uno en particular (bueno, en la Ouija son los demoniacos esp&amp;iacute;ritus)&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;El Caso Pr&amp;aacute;ctico&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Vamos a tener una barra de men&amp;uacute; en nuestra p&amp;aacute;gina web, que tiene los siguientes elementos:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_69CA7736.png"&gt;&lt;img height="83" width="545" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_7C6F4B20.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;El peso total de estas im&amp;aacute;genes es&amp;nbsp; de 128 KB, por otra parte se puede ver una imagen que se llama Todo.png, esta imagen contiene un solo &amp;ldquo;lienzo&amp;rdquo; con todas las im&amp;aacute;genes individuales que he mostrado. El hecho de que pese menos, sin ser especialista en im&amp;aacute;genes, creo que es por la info asociada a la imagen propiamente tal. (Si no estoy en lo correcto, me ayudan) . Sin embargo esto no nos va a detener en nuestro an&amp;aacute;lisis, ya que esto lo consideraremos al momento de obtener los resultados.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_4063096B.png"&gt;&lt;img height="269" width="342" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_0607938A.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Para analizar los cargas y los resultados vamos a utilizar &lt;a target="_blank" href="https://addons.mozilla.org/es-ES/firefox/addon/1843"&gt;FireBug&lt;/a&gt; de FireFox.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;P&amp;aacute;gina &amp;ldquo;Normal&amp;rdquo; Sin CSS Sprite&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Al ejecutar la p&amp;aacute;gina, con im&amp;aacute;genes independientes vemos que su comportamiento en tema de carga es la siguiente:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_2D7E5FF4.png"&gt;&lt;img height="473" width="528" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_70F5C57C.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Existen 8 HTTP Request, y cada imagen tiene su procesamiento en t&amp;eacute;rminos de peticiones. El tama&amp;ntilde;o final &lt;strong&gt;es 125 Kb descargados y la duraci&amp;oacute;n es 4.08Seg&lt;/strong&gt;. Seg&amp;uacute;n Firebug, f&amp;iacute;jate en la petici&amp;oacute;n del Icono7 siguiente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_54F46AB7.png"&gt;&lt;img height="139" width="206" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_45DD8BDD.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Con esto podemos ver que la mayor parte del tiempo, en cada petici&amp;oacute;n de im&amp;aacute;genes es m&amp;aacute;s el tiempo de conexi&amp;oacute;n de la recepci&amp;oacute;n de la imagen propiamente tal! &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;P&amp;aacute;gina con CSS Sprite&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Vamos a escribir el estilo que nos va a servir para crear nuestro ejemplo, el siguiente, a grosso modo puedes ver que se visualizan sectores de la imagen, de un ancho de 128px de tal manera de completar el men&amp;uacute; completo. Cada uno de estos estilos se los asignaremos a etiquetas span.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;style&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;#menu&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; &lt;span style="color:#a31515;"&gt;span&lt;/span&gt; { &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;width&lt;/span&gt;:&lt;span style="color:blue;"&gt;128px&lt;/span&gt;; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;height&lt;/span&gt;:&lt;span style="color:blue;"&gt;110px&lt;/span&gt;; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;display&lt;/span&gt;:&lt;span style="color:blue;"&gt;inline&lt;/span&gt;; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;float&lt;/span&gt;:&lt;span style="color:blue;"&gt;left&lt;/span&gt;; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;background-image&lt;/span&gt;:&lt;span style="color:blue;"&gt;url(ejemplo/todo.png)&lt;/span&gt;; &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;.icono1&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; { &lt;span style="color:red;"&gt;background-position&lt;/span&gt;:&lt;span style="color:blue;"&gt;0&lt;/span&gt; &lt;span style="color:blue;"&gt;0&lt;/span&gt;;} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;.icono2&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; { &lt;span style="color:red;"&gt;background-position&lt;/span&gt;:&lt;span style="color:blue;"&gt;-128px&lt;/span&gt; &lt;span style="color:blue;"&gt;0&lt;/span&gt;;} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;.icono3&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; { &lt;span style="color:red;"&gt;background-position&lt;/span&gt;:&lt;span style="color:blue;"&gt;-256px&lt;/span&gt; &lt;span style="color:blue;"&gt;0&lt;/span&gt;;} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;.icono4&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; { &lt;span style="color:red;"&gt;background-position&lt;/span&gt;:&lt;span style="color:blue;"&gt;-384px&lt;/span&gt; &lt;span style="color:blue;"&gt;0&lt;/span&gt;;} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;.icono5&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; { &lt;span style="color:red;"&gt;background-position&lt;/span&gt;:&lt;span style="color:blue;"&gt;-512px&lt;/span&gt; &lt;span style="color:blue;"&gt;0&lt;/span&gt;;} &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;.icono6&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; { &lt;span style="color:red;"&gt;background-position&lt;/span&gt;:&lt;span style="color:blue;"&gt;-640px&lt;/span&gt; &lt;span style="color:blue;"&gt;0&lt;/span&gt;;} &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;.icono7&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt; { &lt;span style="color:red;"&gt;background-position&lt;/span&gt;:&lt;span style="color:blue;"&gt;-768px&lt;/span&gt; &lt;span style="color:blue;"&gt;0&lt;/span&gt;;} &lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;style&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;En el siguiente c&amp;oacute;digo vemos las etiquetas Span y el contenedor DIV que vamos a utilizar.&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;div&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;menu&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:red;"&gt;width&lt;/span&gt;:&lt;span style="color:blue;"&gt;910px&lt;/span&gt;; &lt;span style="color:red;"&gt;height&lt;/span&gt;: &lt;span style="color:blue;"&gt;110px&lt;/span&gt;;&lt;span style="color:blue;"&gt;&amp;quot;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt; &lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;BLOCKED SCRIPTalert(&amp;#39;icono1&amp;#39;)&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono1&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono1&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt; &lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;BLOCKED SCRIPTalert(&amp;#39;icono2&amp;#39;)&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono2&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono2&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt; &lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;BLOCKED SCRIPTalert(&amp;#39;icono3&amp;#39;)&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono3&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono3&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt; &lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;BLOCKED SCRIPTalert(&amp;#39;icono4&amp;#39;)&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono4&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono4&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt; &lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;BLOCKED SCRIPTalert(&amp;#39;icono5&amp;#39;)&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono5&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono5&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt; &lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;BLOCKED SCRIPTalert(&amp;#39;icono6&amp;#39;)&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono6&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono6&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt; &lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;BLOCKED SCRIPTalert(&amp;#39;icono7&amp;#39;)&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono7&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt; &lt;span style="color:red;"&gt;class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;icono7&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;span&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;div&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;Ahora veamos el resultado en FireBug con FireFox.:&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_64B3FFBB.png"&gt;&lt;img height="374" width="532" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_11993CCA.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Solo dos pedidos, el HTML propiamente tal y luego la imagen, tambi&amp;eacute;n al igual que en el caso anterior, hay un tiempo de Conexi&amp;oacute;n alto en comparaci&amp;oacute;n al de recepci&amp;oacute;n, pero esto se hace solo una vez, el resultado es claro, &lt;strong&gt;109Kb de descarga con un tiempo de 2.12s&lt;/strong&gt;. &lt;/p&gt;
&lt;table width="279" cellpadding="2" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="72" valign="top"&gt;&lt;strong&gt;M&amp;eacute;todo&lt;/strong&gt;&lt;/td&gt;
&lt;td width="90" valign="top"&gt;&lt;strong&gt;Tama&amp;ntilde;o (Kb)&lt;/strong&gt;&lt;/td&gt;
&lt;td width="115" valign="top"&gt;&lt;strong&gt;Tiempo (Seg)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="72" valign="top"&gt;Normal&lt;/td&gt;
&lt;td width="90" valign="top"&gt;
&lt;p align="center"&gt;125Kb&lt;/p&gt;
&lt;/td&gt;
&lt;td width="115" valign="top"&gt;
&lt;p align="center"&gt;4.08&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="72" valign="top"&gt;CSS Sprite&lt;/td&gt;
&lt;td width="90" valign="top"&gt;
&lt;p align="center"&gt;109Kb&lt;/p&gt;
&lt;/td&gt;
&lt;td width="115" valign="top"&gt;
&lt;p align="center"&gt;2.12&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align="justify"&gt;&lt;strong&gt;Es decir, un 48% de reducci&amp;oacute;n en el tiempo&lt;/strong&gt;, claramente no es relevante que sean 16 kb menos, (ya que seg&amp;uacute;n ese razonamiento, la de regla de tres simple, el CSS Sprite deber&amp;iacute;a demorar 3.5 seg)&lt;/p&gt;
&lt;p align="justify"&gt;Obviamente se nos viene a la cabeza los image maps, aunque no son aplicables en todas las ocasiones como los CSS Sprites , por ejemplo cuando las im&amp;aacute;genes no est&amp;aacute;n f&amp;iacute;sicamente organizadas en la p&amp;aacute;gina una al lado de otra, o puedes estar en el header y otra en el footer de la p&amp;aacute;gina.&lt;/p&gt;
&lt;p align="justify"&gt;Entonces , para concluir, esta adem&amp;aacute;s de otras t&amp;eacute;cnicas que ire posteando en el futuro, son consideradas reglas de oro en la optimizaci&amp;oacute;n de sitios web, estas reglas no las escrib&amp;iacute; yo!, si no que las aprend&amp;iacute; y quiero compartirlas. De donde las aprend&amp;iacute;? Del Libro &amp;ldquo;&lt;a target="_blank" href="http://oreilly.com/catalog/9780596529307"&gt;High Performance Web Sites&lt;/a&gt;&amp;rdquo;&amp;nbsp; del maestro Steve Souders, lectura obligada para un Ninja Web.&lt;/p&gt;
&lt;p&gt;Espero que te haya servido! &lt;br /&gt;Nos vemos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=164191" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/msdn/default.aspx">msdn</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx">Tips</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Ninja+Web/default.aspx">Ninja Web</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Optimizaci_26002300_243_3B00_n/default.aspx">Optimizaci&amp;#243;n</category></item></channel></rss>