SlideShare una empresa de Scribd logo
MejoresPrácticasen el Desarrollo de SitiosWeb & ASP.NET Ajax  & Nuevas funcionalidades de ASP.NET 4 Gonzalo Pérez C.Web Developer CoroboriMVP ASP/ASP.NEThttp://www.chalalo.clTwitter:chalalochalalo@hotmail.com Juan Carlos OlamendyTurruellas Arquitecto Principal, Exynko Máster en InformáticaEmpresarial Microsoft MVP Oracle ACE johnx_olam@fastmail.fm
Agenda de Hoy Optimización Web Networking HTML CSS JavasCript Marshalling ASP.NET AJAX Lo Nuevo de ASP.NET 4.0 Caché extensible Redirección de páginas Compresión del Session State Uso de etiquetasMetas Mejor control del ViewState Enrutamiento en páginas Web Forms Uso de identificadores del cliente Control Chart Expresiones con soporte Html Encoding Mejoras en ASP.NET MVC 2 2
Optimización Web «En la mayoría de las páginas web, menos del 10 - 20% del tiempo de carga de una página , corresponde a la descarga del documento html, existe entonces un 80-90% que podemos intentar reducir» - Steve Souders
Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
Optimizaciones - NetworkingComprimir el tráfico en la red Response Request GET / HTTP/1.1 Accept:  */* Accept-Language:  en-us UA-CPU:  x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible…) Host:  www.live.com Response HTTP/1.1 200 OK Content-Length:  3479 Expires:  -1 Date:  Sun, 14 Mar 2010 21:30:46 GMT Content-Type:  text/html; charset=utf-8 Pragma:  no-cache Content-Encoding: gzip Accept-Encoding: gzip, deflate Content-Encoding:  gzip …Habilitadodesde el WebServer … Revisarque y cuantocomprimir
Optimizaciones - NetworkingProveerContenido Cacheable Primer Request GET /images/banner.jpg HTTP/1.1 Host: www.chalalo.cl PrimerResponse HTTP/1.1 200 OK Content-Type: image/jpeg Expires:  Fri, 19 Sep 2010 00:00:00 GMT Expires:  Fri, 19 Sep 2010 00:00:00 GMT Segundo Request GET /images/banner.jpg HTTP/1.1 Host: www.chalalo.cl No se necesita Response
Response Request GET /images/banner.jpg HTTP/1.1 Host:  www.microsoft.com If-Modified-Since: Sun, 22 Jul 2010 21:30:46 GMT Response HTTP/1.1 304 Not Modified Content-Type:  image/jpeg Last-Modified:  Sun, 22 Jul 2010 21:30:46 GMT Last-Modified:  Sun, 22 Jul 2010 21:30:46 GMT If-Modified-Since: Sun, 22 Jul 2010 21:30:46 GMT Optimizaciones - NetworkingRequest Condicionales
Optimizaciones - NetworkingMinimizar  JavaScript ( no escompresión) JavaScript Original JavaScript Minimizado  function CreateBoard() {             images = []; board.innerHTML = ''; var c = 1; vari = count / 2 - .5;             for (var x = -i; x <= i; x++)             {                 for (var z = -i; z <= i; z++)                 { varimg = document.createElement('img'); img.setAttribute("name", "rotatingimage"); img.style.left = '5000px';                     img.x3d = x;                     img.z3d = z;                     if (useBrowserLogos == true)                     {                         switch (c)                         {                             case 1:                              img.src = IEIMAGE;                                 c ++;                                 break;                             case 2:                                 img.src = LOGO2;                                 c ++;                                 break;                             case 3:                                 img.src = LOGO1;                                 c ++;                                 break;                             case 4:                                 img.src = LOGO4;                                 c ++;                                 break;                                case 5:                                 img.src = LOGO3;                                 c = 1;                                 break;                         }                     }                     else                     {                         img.src = IMAGE;                     } board.appendChild(img); images.push(img);                 }             } countimages.innerHTML = images.length;         } e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('b'+e(c)+'b','g'),k[c])}}return p}('y v(){a=[];b.e=apos;apos;;9 c=1;9 i=D/2-.5;d(9 x=-i;x<=i;x++){d(9 z=-i;z<=i;z++){9 0=l.H(apos;0apos;);0.o("n","p");0.q.s=apos;rapos;;0.m=x;0.f=z;g(h==k){j(c){8 1:0.6=t;c++;7;8 2:0.6=F;c++;7;8 3:0.6=G;c++;7;8 4:0.6=J;c++;7;8 5:0.6=w;c=1;7}}C{0.6=I}b.B(0);a.A(0)}}E.e=a.u}')
Optimizaciones - NetworkingNuncaredimesionarlasimágenes solo en escala. <html> <head> <title>Test</title> </head> <body> … <!-- logo.gif dimensiones 500 x 400 --> <imgsrc=“logo.gif" width="50" height="40" /> … </body> </html> 500 x 400 width="50" height="40"
Optimizaciones - Networking Nuncaredimesionarlasimágenessolo en escala. <html> <head> <title>Test</title> </head> <body> … <!-- logo.gif dimensiones: 50 x 40 --> <imgsrc=“logo.gif" width="50" height="40" /> … </body> </html> 50 x 40 width="50" height="40"
Optimizaciones- NetworkingCombinarJavascript & CDN <script src=“miScript1.js” … ></script> <script src=“miScript2.js” … ></script> <script src=“miScript3.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“miScript4.js” … ></script> <script src=“jQuery.js” … ></script>
Optimizaciones- NetworkingCombinarJavascript & CDN <script src=“miScript1.js” … ></script> <script src=“miScript2.js” … ></script> <script src=“miScript3.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“miScript4.js” … ></script> <script src=“jQuery.js” … ></script>
13 Optimizaciones: NetworkingCombinarJavascript & CDN <script src=“miScript.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js” … ></script>
Optimizaciones - NetworkingUsar Image Sprites <html> <head> <title>Test</title> </head> <body> … <imgsrc="a.gif" />  Item 1 <imgsrc="b.gif" />  Item 2 <imgsrc=“c.gif" />  Item 3 <imgsrc=“d.gif" />  Item 4 <imgsrc=“e.gif" />  Item 5 <imgsrc=“f.gif" />  Item 6 … </body> </html> <imgsrc="a.gif" />  Item 1 <imgsrc="b.gif" />  Item 2 <imgsrc=“c.gif" />  Item 3 <imgsrc=“d.gif" />  Item 4 <imgsrc=“e.gif" />  Item 5 <imgsrc=“f.gif" />  Item 6
Optimizaciones - Networking Usar Image Sprites
Optimizaciones - NetworkingUsar Image Sprites <head> <title>Test</title> <style type="text/css"> .a, .b { width: 10; height: 10 } .a, .b { background-image: "abc.gif" } .a { background-position: 0   0 } .b { background-position: 0 -10 } </style> </head> <body> … <div class="a"></div>  Item 1 <div class="b"></div>  Item 2 … </body> .a, .b { width: 10; height: 10 } .a, .b { background-image: "abc.gif" } .a { background-position: 0   0 } .b { background-position: 0 -10 } <div class="a"></div> <div class="b"></div>
Internet Explorer 9 Network ToolsMedirlasmejoras de rendimiento a nivel de Networking
- Mitificación de Script :Microsoft Ajax Minifier- Images Script DEMO Gonzalo Pérez C. MVP ASP/ASP.NET http://www.chalalo.cl Twitter: chalalo chalalo@hotmail.com
Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
Optimizaciones - HTMLEvitarJavaScript  embebido <html> <head> <title>Test</title> <script type="text/javascript">  <!--    function helloWorld() {      alert('Hello World!') ;    }  // --> </script> </head> <body> … </body> </html> <script type="text/javascript">  <!--    function HolaMundo() {      alert('HolaMundo!') ;    }  // --> </script>
Optimizaciones- HTMLEvitarreferenciar o escribir JavaScript en el Head  <html> <head> <title>Test</title> <script src=“myscript.js” … ></script> </head> <body> … </body> </html>  <script src=“myscript.js” … ></script>
<html> <head> <title>Test</title> </head> <body> … … … </body> </html> <script src=“myscript.js” … ></script> Optimizaciones- HTMLReferenciar o escribir JavaScript al final de la página.
Optimizaciones - HTMLPerosi lo haces, utiliza el tag defer (Solo IE) <html> <head> <title>Test</title> <script src=“myscript.js” … ></script> </head> <body> … </body> </html> defer="defer">
Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
Optimizaciones - CSSEvitarEstilosEmbebidos <html> <head> <title>Test</title> </head> <body> <style>    <!-- 		.green { color:#009900;} 		.red { color:#660000;}   --> </style>    … 	 … 	 … </body> </html> <style>    <!--        .verde { color:#009900;}        .rojo { color:#660000;}   --> </style>
Optimizaciones- CSSEvitarreferenciar CSS al final de la página <html> <head> <title>Test</title> </head> <body> … … … </body> </html> <link rel="stylesheet" type="text/css" href=“mystyles.css" />
Optimizaciones - CSSReferenciar  el archivo de estilos en el head. <html> <head> <title>Test</title> </head> <body> … … … </body> </html> <link rel="stylesheet" type="text/css"href="class.css" />
Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
Optimizaciones - JavascriptMinimizar la resolución de símbolos varfoo obj.foo Costo DOM Global Prototype Chain Intermediate Scopes Instance Local
Optimizaciones - JavascriptMinimizar la Resolución de Símbolos function TrabajarConVariableLocal() { variableLocal= 5; return (variableLocal+ 1 ); } variableLocal variableLocal
function TrabajarConVariableLocal2() { varvariableLocal= 5; return (variableLocal+ 1 ); } varvariableLocal variableLocal Optimizaciones - JavascriptMinimizar la Resolución de Símbolos
Optimizaciones - JavascriptMinimizar la Resolución de Símbolos: Funciones function IterarSobreColeccionWork() { var length = myCollection.length; for(vari = 0; i < length; i++) { Work(myCollection[i]); } } Work
Optimizaciones - JavascriptMinimizar la Resolución de Símbolos: Funciones function IterarSobreColeccionWork2() { varfuncWork = Work; var length = myCollection.length; for(vari = 0; i < length; i++) { funcWork(myCollection[i]); } } varfuncWork = Work; funcWork
<html> <head> <title>Test</title> </head> <body> … … … <script src=“myscript.js” … ></script>  <script src=“navigation.js” … ></script> <script src=“jquery.js” … ></script> <script src=“jquery.js” … ></script> </body> </html> Optimizacion: JavasScriptRemover referencias y códigosrepetidos <script src=“jquery.js” … ></script> <script src=“jquery.js” … ></script>
<html> <head> <title>Test</title> </head> <body> … … <script src=“jquery.js” … ></script> <script src=“prototype.js” … ></script> <script src=“dojo.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“mochikit.js” … ></script> <script src=“lightbox.js” … ></script> <script src=“jslibs.js” … ></script> <script src=“qooxdoo.js” … ></script> Optimizaciones - JavascriptRemover Script Duplicados…Librerías <script src=“jquery.js” … ></script> <script src=“prototype.js” … ></script> <script src=“dojo.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“mochikit.js” … ></script> <script src=“lightbox.js” … ></script> <script src=“jslibs.js” … ></script> <script src=“qooxdoo.js” … ></script>
Networking Networking HTML JavaScript Marshalling ASP.NET Ajax Puntos de Optimización CSS
Trident (MSHTML) JScript Engine Optimizaciones: MarshallingMinimizar la interacción con el DOM DOM
Optimizaciones: MarshallingMinimizar la interacción con el DOM function CalcularSuma() { // ObtenerValores var nume1 = document.body.all.nume1.value; var nume2 = document.body.all.nume2.value; // CalcularResultado document.body.all.resultado.value = nume1 + nume2; } document.body.all document.body.all document.body.all 9 Búsquedas en el DOM
Optimizaciones: MarshallingMinimizar la interacción con el DOM function CalcularSuma2() { // Cachear la colección de elementos var elms = document.body.all; // Obtener los valores var nume1 = elms.nume1.value; var nume2 = elms.nume2.value; // CalcularResultado elms.result.value = lSide + rSide; } var elms = document.body.all; elms elms 3 Búsquedas al Dom elms
Networking Networking HTML JavaScript Marshalling ASP.NET Ajax Puntos de Optimización CSS
Optimización – ASP.NET AJAXOptimizaciones a Nivel de ScriptManager ,[object Object]
ScriptMode
EnablePartialRerendering
LoadScriptBeforeUI
EnableCDN
ToolScriptManager,[object Object]
Optimizaciones a nivel de ASP.NET AJAX DEMO Gonzalo Pérez C. MVP ASP/ASP.NET http://www.chalalo.cl Twitter: chalalo chalalo@hotmail.com
Resumen Optimización 1)Usar Compresión2)Usar Request3)Condicionales4)Proveer Contenido Cacheable5)MinificarJavascript6)No escalar imágenes7)Usar ImageSprites8)Referenciar JScript  al final9)Agregar deferTag10)Referenciar Hojas de Estilo arriba11)Disminuir las búsquedas en el Dom12)Cachear los referencias a funciones13)Remover Script repetidos14)Remover funciones repetidas15)Utilizar CDN16)Utilizar Mejoras de ScriptManager
Nuevas funcionalidades de ASP.NET 4 Caché extensible Problema: Si hay mucho tráfico, la necesidad de memoria aumenta, y existe competencia por la memoria que es un recurso limitado. Solución: La caché extensible permite configurar uno o más proveedores de caché ( asociados a mecanismo de almacenamiento). Estrategia de implementación: (Demo)
Caché extensible DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
Redirección de páginas Problema: Al mover páginas u otros recursos, se usaba Response.Redirectemitiendo una respuesta HTTP 302 (temporary moved) para enviar al cliente a la nueva dirección. Solución: ASP.NET 4 usa el nuevo método eResponse.RedirectPermanent("newlocation/page.aspx")para emitir respuestas HTTP 301 (permanent moved). Response.Redirect Response.RedirectPermanent("newlocation/page.aspx")
Comprensión del Estado de Sesión Problema: Se almacena una gran cantidad de objetos en el estado de sesión. Solución: ASP.NET 4 incorpora la opción de compresión del estado de sesión. Los datos se comprimen (descomprimidos) usando la clase System.IO.Compression.GZipStream. Estrategía de implementación:  <sessionState mode="SQLServer" sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate" allowCustomSqlDatabase="true" compressionEnabled="true"/> compressionEnabled="true"
Uso de etiquetasMetas Problema: Queremos generar dinámicamente meta-información sobre nuestra página. Una técnica SearchEngineOptimization (SEO). Solución: ASP.NET 4 incluye las propiedades MetaKeywords y MetaDescription a la clase Page. Además se incluyen los atributos Keywords y Description en la directiva @Page. Estrategia de implementación: <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="_01WebAppOutputCacheDemo._Default" Keywords="This is the default page" Description="This is the default page" %> Keywords="This is the default page" Description="This is the default page"
Mejormanejo del ViewState Problema: Queremos mejor control del ViewState. Solución: Uso de la nueva propiedad ViewStateMode en los controles. Posibles valores: Enabled, Disabled, Inherit. Estrategia de implementación: <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebAppViewStateDemo._Default" ViewStateMode="Disabled" %> ViewStateMode="Disabled"
Enrutamiento Problema: Queremos normalizar las URLs de manera descriptibles http://website/products/category/12. Otra técnica SEO. Solución: Configurar patrones del enrutamiento para asociar URL con las páginas Web Forms físicas. Estrategia de implementación: (Demo)
Enrutamiento DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
Uso de la propiedadClientID Problema: Es necesario conocer el identificador de los elementos HTML generados. El antiguo algoritmo hacía que esto no fuese predecibles. Solución:  Alternativa 1. Alternativa 2. La nueva propiedad ClientIdMode de los controles Web. Posible valores AutoID, Static, Predictable y Inherit. varbtn = document.getElementById("<% =Button1.ClientID %>"); varbtn = $('<% =Button1.ClientID %>');
Uso de la propiedadClientID DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
Control Chart Problema: Se quiere visualizar datos de una manera comprensible. Ejemplo, un reporte de ventas. Solución: Se introdujo el nuevo control Chart con varias opciones de visualización. En tiempo de ejecución se genera una imagen referenciado por el usuario. Estrategia de implementación: (Demo)
Control Chart DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
SoporteHTML Encoding automático Problema: El desarrollo en ASP.NET está lleno de sentencias <%= expression %> para enviar texto a la salida. Si no se utiliza el método HttpUtility.HtmlEncode, se puede inyectar código JavaScript o HTML. Ataque conocido como XSS (Cross Site Scripting). Solución: Se introdujo la sentencia <%: expression %> generando <%= HttpUtility.HtmlEncode(expression) %>.    Si el texto está formateado, entonces se utiliza:   <%: new HtmlString("<div>This is already encoded< <%: expression %> <%= HttpUtility.HtmlEncode(expression) %> <%: new HtmlString("<div>This is already encoded</div>") %>
HTML Helpersfuertementetipiados Problema: En ASP.NET MVC, se quiere tener HTML Helpers tipiados para detectar errores de compilación y mejor soporte de IntelliSense. Solución: Se introdujeron los HTML Helpers fuertemente tipiados siguiendo la convención Html.HelperNameFor(,     pasando como parámetro una expresión lambda. Estrategias de implementación: <%= Html.TextBoxFor(model=>model.ProductName) %> Html.HelperNameFor() <%= Html.TextBoxFor(model=>model.ProductName) %>

Más contenido relacionado

Destacado

Presenting The Intergrated Practitioner
Presenting The Intergrated PractitionerPresenting The Intergrated Practitioner
Presenting The Intergrated Practitioner
Nigel Roper
 
Web matrix session 3
Web matrix session 3Web matrix session 3
Web matrix session 3
Gonzalo C.
 
Libro de-la- espalda
Libro de-la- espaldaLibro de-la- espalda
Libro de-la- espalda
paulocapelo
 
Mommy Business Book
Mommy Business BookMommy Business Book
Mommy Business Book
Andrea Ordodi
 
1032513010
10325130101032513010
1032513010
Gonzalo C.
 
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva WebAplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Gonzalo C.
 
Web matrix session2
Web matrix session2Web matrix session2
Web matrix session2
Gonzalo C.
 
Global Warning And Carbon Credit
Global Warning And Carbon CreditGlobal Warning And Carbon Credit
Global Warning And Carbon Credit
Dr.Lalit Kumar
 
Modelling Consultations
Modelling ConsultationsModelling Consultations
Modelling Consultations
Nigel Roper
 
C O M P A P P I I 005
C O M P  A P P  I I 005C O M P  A P P  I I 005
C O M P A P P I I 005
Lisa Hinton
 
Cronograma semana leitura
Cronograma semana leitura Cronograma semana leitura
Cronograma semana leitura
paulocapelo
 

Destacado (11)

Presenting The Intergrated Practitioner
Presenting The Intergrated PractitionerPresenting The Intergrated Practitioner
Presenting The Intergrated Practitioner
 
Web matrix session 3
Web matrix session 3Web matrix session 3
Web matrix session 3
 
Libro de-la- espalda
Libro de-la- espaldaLibro de-la- espalda
Libro de-la- espalda
 
Mommy Business Book
Mommy Business BookMommy Business Book
Mommy Business Book
 
1032513010
10325130101032513010
1032513010
 
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva WebAplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva Web
 
Web matrix session2
Web matrix session2Web matrix session2
Web matrix session2
 
Global Warning And Carbon Credit
Global Warning And Carbon CreditGlobal Warning And Carbon Credit
Global Warning And Carbon Credit
 
Modelling Consultations
Modelling ConsultationsModelling Consultations
Modelling Consultations
 
C O M P A P P I I 005
C O M P  A P P  I I 005C O M P  A P P  I I 005
C O M P A P P I I 005
 
Cronograma semana leitura
Cronograma semana leitura Cronograma semana leitura
Cronograma semana leitura
 

Similar a Máxima potencia en el desarrollo de sitios web

Desarrollo De Videojuegos Con Javascript
Desarrollo De Videojuegos Con JavascriptDesarrollo De Videojuegos Con Javascript
Desarrollo De Videojuegos Con Javascript
BR7
 
Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...
Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...
Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...
Abimael Fernandes
 
Blog
BlogBlog
Blog
cucutras
 
Unidad 3 AJAX
Unidad 3 AJAX Unidad 3 AJAX
Unidad 3 AJAX
Iosdy Campos
 
Unidad3ajax
Unidad3ajaxUnidad3ajax
Unidad3ajax
Iosdy Campos
 
JQuery Mvc
JQuery   MvcJQuery   Mvc
JQuery Mvc
Gerardo Marchant
 
Ejemplo usando la APIs de google
Ejemplo usando la APIs de googleEjemplo usando la APIs de google
Ejemplo usando la APIs de google
Lilia Valles
 
Lab2-POO
Lab2-POOLab2-POO
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
Javier P.
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
oswchavez
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
oswchavez
 
Como colocar un chat en tu blogger
Como colocar un chat en tu bloggerComo colocar un chat en tu blogger
Como colocar un chat en tu blogger
Nicole Castillo
 
Popup
PopupPopup
Graficar lineas en java, en un j panel
Graficar lineas en java, en un j panelGraficar lineas en java, en un j panel
Graficar lineas en java, en un j panel
Edison Rivadeneira
 
Cibergrafias
CibergrafiasCibergrafias
Cibergrafias
Alexander Lopez
 
Sesion Nº5 Formato De Texto Y Caracteres Especiales
Sesion Nº5   Formato De Texto Y Caracteres EspecialesSesion Nº5   Formato De Texto Y Caracteres Especiales
Sesion Nº5 Formato De Texto Y Caracteres Especiales
Edgar A. Cruz Huaman
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguay
gtuguruguay
 
Taller cognitive services en contenedores locales
Taller cognitive services en contenedores localesTaller cognitive services en contenedores locales
Taller cognitive services en contenedores locales
Luis Beltran
 
Clasificación de los robots
Clasificación de los robotsClasificación de los robots
Clasificación de los robots
luciawang
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
Javier P.
 

Similar a Máxima potencia en el desarrollo de sitios web (20)

Desarrollo De Videojuegos Con Javascript
Desarrollo De Videojuegos Con JavascriptDesarrollo De Videojuegos Con Javascript
Desarrollo De Videojuegos Con Javascript
 
Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...
Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...
Cómo guardar las marcas de un mapa de google en un archivo xml y acceder a es...
 
Blog
BlogBlog
Blog
 
Unidad 3 AJAX
Unidad 3 AJAX Unidad 3 AJAX
Unidad 3 AJAX
 
Unidad3ajax
Unidad3ajaxUnidad3ajax
Unidad3ajax
 
JQuery Mvc
JQuery   MvcJQuery   Mvc
JQuery Mvc
 
Ejemplo usando la APIs de google
Ejemplo usando la APIs de googleEjemplo usando la APIs de google
Ejemplo usando la APIs de google
 
Lab2-POO
Lab2-POOLab2-POO
Lab2-POO
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
 
Como colocar un chat en tu blogger
Como colocar un chat en tu bloggerComo colocar un chat en tu blogger
Como colocar un chat en tu blogger
 
Popup
PopupPopup
Popup
 
Graficar lineas en java, en un j panel
Graficar lineas en java, en un j panelGraficar lineas en java, en un j panel
Graficar lineas en java, en un j panel
 
Cibergrafias
CibergrafiasCibergrafias
Cibergrafias
 
Sesion Nº5 Formato De Texto Y Caracteres Especiales
Sesion Nº5   Formato De Texto Y Caracteres EspecialesSesion Nº5   Formato De Texto Y Caracteres Especiales
Sesion Nº5 Formato De Texto Y Caracteres Especiales
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguay
 
Taller cognitive services en contenedores locales
Taller cognitive services en contenedores localesTaller cognitive services en contenedores locales
Taller cognitive services en contenedores locales
 
Clasificación de los robots
Clasificación de los robotsClasificación de los robots
Clasificación de los robots
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 

Más de Gonzalo C.

Charla ie
Charla ieCharla ie
Charla ie
Gonzalo C.
 
Tips aspnet
Tips aspnetTips aspnet
Tips aspnet
Gonzalo C.
 
Aspnetwebapi mongo
Aspnetwebapi mongoAspnetwebapi mongo
Aspnetwebapi mongo
Gonzalo C.
 
Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5 Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5
Gonzalo C.
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Gonzalo C.
 
Web matrix session5
Web matrix session5Web matrix session5
Web matrix session5
Gonzalo C.
 
Web matrix session4
Web matrix session4Web matrix session4
Web matrix session4
Gonzalo C.
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1
Gonzalo C.
 
Ppt workshop ie9
Ppt workshop ie9Ppt workshop ie9
Ppt workshop ie9
Gonzalo C.
 
Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010
Gonzalo C.
 
C:\fakepath\optimizacion
C:\fakepath\optimizacionC:\fakepath\optimizacion
C:\fakepath\optimizacion
Gonzalo C.
 
Aspnet Futures Msdn
Aspnet Futures MsdnAspnet Futures Msdn
Aspnet Futures Msdn
Gonzalo C.
 

Más de Gonzalo C. (12)

Charla ie
Charla ieCharla ie
Charla ie
 
Tips aspnet
Tips aspnetTips aspnet
Tips aspnet
 
Aspnetwebapi mongo
Aspnetwebapi mongoAspnetwebapi mongo
Aspnetwebapi mongo
 
Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5 Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
 
Web matrix session5
Web matrix session5Web matrix session5
Web matrix session5
 
Web matrix session4
Web matrix session4Web matrix session4
Web matrix session4
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1
 
Ppt workshop ie9
Ppt workshop ie9Ppt workshop ie9
Ppt workshop ie9
 
Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010Web matrix razor_aspnetmvc_finalv2_techdays2010
Web matrix razor_aspnetmvc_finalv2_techdays2010
 
C:\fakepath\optimizacion
C:\fakepath\optimizacionC:\fakepath\optimizacion
C:\fakepath\optimizacion
 
Aspnet Futures Msdn
Aspnet Futures MsdnAspnet Futures Msdn
Aspnet Futures Msdn
 

Último

Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
AMADO SALVADOR
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
evelinglilibethpeafi
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
JuanaNT7
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 

Último (20)

Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 

Máxima potencia en el desarrollo de sitios web

  • 1. MejoresPrácticasen el Desarrollo de SitiosWeb & ASP.NET Ajax & Nuevas funcionalidades de ASP.NET 4 Gonzalo Pérez C.Web Developer CoroboriMVP ASP/ASP.NEThttp://www.chalalo.clTwitter:chalalochalalo@hotmail.com Juan Carlos OlamendyTurruellas Arquitecto Principal, Exynko Máster en InformáticaEmpresarial Microsoft MVP Oracle ACE johnx_olam@fastmail.fm
  • 2. Agenda de Hoy Optimización Web Networking HTML CSS JavasCript Marshalling ASP.NET AJAX Lo Nuevo de ASP.NET 4.0 Caché extensible Redirección de páginas Compresión del Session State Uso de etiquetasMetas Mejor control del ViewState Enrutamiento en páginas Web Forms Uso de identificadores del cliente Control Chart Expresiones con soporte Html Encoding Mejoras en ASP.NET MVC 2 2
  • 3. Optimización Web «En la mayoría de las páginas web, menos del 10 - 20% del tiempo de carga de una página , corresponde a la descarga del documento html, existe entonces un 80-90% que podemos intentar reducir» - Steve Souders
  • 4. Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
  • 5. Optimizaciones - NetworkingComprimir el tráfico en la red Response Request GET / HTTP/1.1 Accept: */* Accept-Language: en-us UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible…) Host: www.live.com Response HTTP/1.1 200 OK Content-Length: 3479 Expires: -1 Date: Sun, 14 Mar 2010 21:30:46 GMT Content-Type: text/html; charset=utf-8 Pragma: no-cache Content-Encoding: gzip Accept-Encoding: gzip, deflate Content-Encoding: gzip …Habilitadodesde el WebServer … Revisarque y cuantocomprimir
  • 6. Optimizaciones - NetworkingProveerContenido Cacheable Primer Request GET /images/banner.jpg HTTP/1.1 Host: www.chalalo.cl PrimerResponse HTTP/1.1 200 OK Content-Type: image/jpeg Expires: Fri, 19 Sep 2010 00:00:00 GMT Expires: Fri, 19 Sep 2010 00:00:00 GMT Segundo Request GET /images/banner.jpg HTTP/1.1 Host: www.chalalo.cl No se necesita Response
  • 7. Response Request GET /images/banner.jpg HTTP/1.1 Host: www.microsoft.com If-Modified-Since: Sun, 22 Jul 2010 21:30:46 GMT Response HTTP/1.1 304 Not Modified Content-Type: image/jpeg Last-Modified: Sun, 22 Jul 2010 21:30:46 GMT Last-Modified: Sun, 22 Jul 2010 21:30:46 GMT If-Modified-Since: Sun, 22 Jul 2010 21:30:46 GMT Optimizaciones - NetworkingRequest Condicionales
  • 8. Optimizaciones - NetworkingMinimizar JavaScript ( no escompresión) JavaScript Original JavaScript Minimizado function CreateBoard() { images = []; board.innerHTML = ''; var c = 1; vari = count / 2 - .5; for (var x = -i; x <= i; x++) { for (var z = -i; z <= i; z++) { varimg = document.createElement('img'); img.setAttribute("name", "rotatingimage"); img.style.left = '5000px'; img.x3d = x; img.z3d = z; if (useBrowserLogos == true) { switch (c) { case 1: img.src = IEIMAGE; c ++; break; case 2: img.src = LOGO2; c ++; break; case 3: img.src = LOGO1; c ++; break; case 4: img.src = LOGO4; c ++; break; case 5: img.src = LOGO3; c = 1; break; } } else { img.src = IMAGE; } board.appendChild(img); images.push(img); } } countimages.innerHTML = images.length; } e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('b'+e(c)+'b','g'),k[c])}}return p}('y v(){a=[];b.e=apos;apos;;9 c=1;9 i=D/2-.5;d(9 x=-i;x<=i;x++){d(9 z=-i;z<=i;z++){9 0=l.H(apos;0apos;);0.o("n","p");0.q.s=apos;rapos;;0.m=x;0.f=z;g(h==k){j(c){8 1:0.6=t;c++;7;8 2:0.6=F;c++;7;8 3:0.6=G;c++;7;8 4:0.6=J;c++;7;8 5:0.6=w;c=1;7}}C{0.6=I}b.B(0);a.A(0)}}E.e=a.u}')
  • 9. Optimizaciones - NetworkingNuncaredimesionarlasimágenes solo en escala. <html> <head> <title>Test</title> </head> <body> … <!-- logo.gif dimensiones 500 x 400 --> <imgsrc=“logo.gif" width="50" height="40" /> … </body> </html> 500 x 400 width="50" height="40"
  • 10. Optimizaciones - Networking Nuncaredimesionarlasimágenessolo en escala. <html> <head> <title>Test</title> </head> <body> … <!-- logo.gif dimensiones: 50 x 40 --> <imgsrc=“logo.gif" width="50" height="40" /> … </body> </html> 50 x 40 width="50" height="40"
  • 11. Optimizaciones- NetworkingCombinarJavascript & CDN <script src=“miScript1.js” … ></script> <script src=“miScript2.js” … ></script> <script src=“miScript3.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“miScript4.js” … ></script> <script src=“jQuery.js” … ></script>
  • 12. Optimizaciones- NetworkingCombinarJavascript & CDN <script src=“miScript1.js” … ></script> <script src=“miScript2.js” … ></script> <script src=“miScript3.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“miScript4.js” … ></script> <script src=“jQuery.js” … ></script>
  • 13. 13 Optimizaciones: NetworkingCombinarJavascript & CDN <script src=“miScript.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js” … ></script>
  • 14. Optimizaciones - NetworkingUsar Image Sprites <html> <head> <title>Test</title> </head> <body> … <imgsrc="a.gif" /> Item 1 <imgsrc="b.gif" /> Item 2 <imgsrc=“c.gif" /> Item 3 <imgsrc=“d.gif" /> Item 4 <imgsrc=“e.gif" /> Item 5 <imgsrc=“f.gif" /> Item 6 … </body> </html> <imgsrc="a.gif" /> Item 1 <imgsrc="b.gif" /> Item 2 <imgsrc=“c.gif" /> Item 3 <imgsrc=“d.gif" /> Item 4 <imgsrc=“e.gif" /> Item 5 <imgsrc=“f.gif" /> Item 6
  • 15. Optimizaciones - Networking Usar Image Sprites
  • 16. Optimizaciones - NetworkingUsar Image Sprites <head> <title>Test</title> <style type="text/css"> .a, .b { width: 10; height: 10 } .a, .b { background-image: "abc.gif" } .a { background-position: 0 0 } .b { background-position: 0 -10 } </style> </head> <body> … <div class="a"></div> Item 1 <div class="b"></div> Item 2 … </body> .a, .b { width: 10; height: 10 } .a, .b { background-image: "abc.gif" } .a { background-position: 0 0 } .b { background-position: 0 -10 } <div class="a"></div> <div class="b"></div>
  • 17. Internet Explorer 9 Network ToolsMedirlasmejoras de rendimiento a nivel de Networking
  • 18. - Mitificación de Script :Microsoft Ajax Minifier- Images Script DEMO Gonzalo Pérez C. MVP ASP/ASP.NET http://www.chalalo.cl Twitter: chalalo chalalo@hotmail.com
  • 19. Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
  • 20. Optimizaciones - HTMLEvitarJavaScript embebido <html> <head> <title>Test</title> <script type="text/javascript">  <!--    function helloWorld() {      alert('Hello World!') ;    }  // --> </script> </head> <body> … </body> </html> <script type="text/javascript">  <!--    function HolaMundo() {      alert('HolaMundo!') ;    }  // --> </script>
  • 21. Optimizaciones- HTMLEvitarreferenciar o escribir JavaScript en el Head <html> <head> <title>Test</title> <script src=“myscript.js” … ></script> </head> <body> … </body> </html> <script src=“myscript.js” … ></script>
  • 22. <html> <head> <title>Test</title> </head> <body> … … … </body> </html> <script src=“myscript.js” … ></script> Optimizaciones- HTMLReferenciar o escribir JavaScript al final de la página.
  • 23. Optimizaciones - HTMLPerosi lo haces, utiliza el tag defer (Solo IE) <html> <head> <title>Test</title> <script src=“myscript.js” … ></script> </head> <body> … </body> </html> defer="defer">
  • 24. Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
  • 25. Optimizaciones - CSSEvitarEstilosEmbebidos <html> <head> <title>Test</title> </head> <body> <style> <!-- .green { color:#009900;} .red { color:#660000;} --> </style> … … … </body> </html> <style> <!-- .verde { color:#009900;} .rojo { color:#660000;} --> </style>
  • 26. Optimizaciones- CSSEvitarreferenciar CSS al final de la página <html> <head> <title>Test</title> </head> <body> … … … </body> </html> <link rel="stylesheet" type="text/css" href=“mystyles.css" />
  • 27. Optimizaciones - CSSReferenciar el archivo de estilos en el head. <html> <head> <title>Test</title> </head> <body> … … … </body> </html> <link rel="stylesheet" type="text/css"href="class.css" />
  • 28. Puntos de Optimización Networking Networking HTML JavaScript Marshalling ASP.NET Ajax CSS
  • 29. Optimizaciones - JavascriptMinimizar la resolución de símbolos varfoo obj.foo Costo DOM Global Prototype Chain Intermediate Scopes Instance Local
  • 30. Optimizaciones - JavascriptMinimizar la Resolución de Símbolos function TrabajarConVariableLocal() { variableLocal= 5; return (variableLocal+ 1 ); } variableLocal variableLocal
  • 31. function TrabajarConVariableLocal2() { varvariableLocal= 5; return (variableLocal+ 1 ); } varvariableLocal variableLocal Optimizaciones - JavascriptMinimizar la Resolución de Símbolos
  • 32. Optimizaciones - JavascriptMinimizar la Resolución de Símbolos: Funciones function IterarSobreColeccionWork() { var length = myCollection.length; for(vari = 0; i < length; i++) { Work(myCollection[i]); } } Work
  • 33. Optimizaciones - JavascriptMinimizar la Resolución de Símbolos: Funciones function IterarSobreColeccionWork2() { varfuncWork = Work; var length = myCollection.length; for(vari = 0; i < length; i++) { funcWork(myCollection[i]); } } varfuncWork = Work; funcWork
  • 34. <html> <head> <title>Test</title> </head> <body> … … … <script src=“myscript.js” … ></script> <script src=“navigation.js” … ></script> <script src=“jquery.js” … ></script> <script src=“jquery.js” … ></script> </body> </html> Optimizacion: JavasScriptRemover referencias y códigosrepetidos <script src=“jquery.js” … ></script> <script src=“jquery.js” … ></script>
  • 35. <html> <head> <title>Test</title> </head> <body> … … <script src=“jquery.js” … ></script> <script src=“prototype.js” … ></script> <script src=“dojo.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“mochikit.js” … ></script> <script src=“lightbox.js” … ></script> <script src=“jslibs.js” … ></script> <script src=“qooxdoo.js” … ></script> Optimizaciones - JavascriptRemover Script Duplicados…Librerías <script src=“jquery.js” … ></script> <script src=“prototype.js” … ></script> <script src=“dojo.js” … ></script> <script src=“animater.js” … ></script> <script src=“extjs.js” … ></script> <script src=“yahooui.js” … ></script> <script src=“mochikit.js” … ></script> <script src=“lightbox.js” … ></script> <script src=“jslibs.js” … ></script> <script src=“qooxdoo.js” … ></script>
  • 36. Networking Networking HTML JavaScript Marshalling ASP.NET Ajax Puntos de Optimización CSS
  • 37. Trident (MSHTML) JScript Engine Optimizaciones: MarshallingMinimizar la interacción con el DOM DOM
  • 38. Optimizaciones: MarshallingMinimizar la interacción con el DOM function CalcularSuma() { // ObtenerValores var nume1 = document.body.all.nume1.value; var nume2 = document.body.all.nume2.value; // CalcularResultado document.body.all.resultado.value = nume1 + nume2; } document.body.all document.body.all document.body.all 9 Búsquedas en el DOM
  • 39. Optimizaciones: MarshallingMinimizar la interacción con el DOM function CalcularSuma2() { // Cachear la colección de elementos var elms = document.body.all; // Obtener los valores var nume1 = elms.nume1.value; var nume2 = elms.nume2.value; // CalcularResultado elms.result.value = lSide + rSide; } var elms = document.body.all; elms elms 3 Búsquedas al Dom elms
  • 40. Networking Networking HTML JavaScript Marshalling ASP.NET Ajax Puntos de Optimización CSS
  • 41.
  • 46.
  • 47. Optimizaciones a nivel de ASP.NET AJAX DEMO Gonzalo Pérez C. MVP ASP/ASP.NET http://www.chalalo.cl Twitter: chalalo chalalo@hotmail.com
  • 48. Resumen Optimización 1)Usar Compresión2)Usar Request3)Condicionales4)Proveer Contenido Cacheable5)MinificarJavascript6)No escalar imágenes7)Usar ImageSprites8)Referenciar JScript al final9)Agregar deferTag10)Referenciar Hojas de Estilo arriba11)Disminuir las búsquedas en el Dom12)Cachear los referencias a funciones13)Remover Script repetidos14)Remover funciones repetidas15)Utilizar CDN16)Utilizar Mejoras de ScriptManager
  • 49. Nuevas funcionalidades de ASP.NET 4 Caché extensible Problema: Si hay mucho tráfico, la necesidad de memoria aumenta, y existe competencia por la memoria que es un recurso limitado. Solución: La caché extensible permite configurar uno o más proveedores de caché ( asociados a mecanismo de almacenamiento). Estrategia de implementación: (Demo)
  • 50. Caché extensible DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
  • 51. Redirección de páginas Problema: Al mover páginas u otros recursos, se usaba Response.Redirectemitiendo una respuesta HTTP 302 (temporary moved) para enviar al cliente a la nueva dirección. Solución: ASP.NET 4 usa el nuevo método eResponse.RedirectPermanent("newlocation/page.aspx")para emitir respuestas HTTP 301 (permanent moved). Response.Redirect Response.RedirectPermanent("newlocation/page.aspx")
  • 52. Comprensión del Estado de Sesión Problema: Se almacena una gran cantidad de objetos en el estado de sesión. Solución: ASP.NET 4 incorpora la opción de compresión del estado de sesión. Los datos se comprimen (descomprimidos) usando la clase System.IO.Compression.GZipStream. Estrategía de implementación: <sessionState mode="SQLServer" sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate" allowCustomSqlDatabase="true" compressionEnabled="true"/> compressionEnabled="true"
  • 53. Uso de etiquetasMetas Problema: Queremos generar dinámicamente meta-información sobre nuestra página. Una técnica SearchEngineOptimization (SEO). Solución: ASP.NET 4 incluye las propiedades MetaKeywords y MetaDescription a la clase Page. Además se incluyen los atributos Keywords y Description en la directiva @Page. Estrategia de implementación: <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="_01WebAppOutputCacheDemo._Default" Keywords="This is the default page" Description="This is the default page" %> Keywords="This is the default page" Description="This is the default page"
  • 54. Mejormanejo del ViewState Problema: Queremos mejor control del ViewState. Solución: Uso de la nueva propiedad ViewStateMode en los controles. Posibles valores: Enabled, Disabled, Inherit. Estrategia de implementación: <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebAppViewStateDemo._Default" ViewStateMode="Disabled" %> ViewStateMode="Disabled"
  • 55. Enrutamiento Problema: Queremos normalizar las URLs de manera descriptibles http://website/products/category/12. Otra técnica SEO. Solución: Configurar patrones del enrutamiento para asociar URL con las páginas Web Forms físicas. Estrategia de implementación: (Demo)
  • 56. Enrutamiento DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
  • 57. Uso de la propiedadClientID Problema: Es necesario conocer el identificador de los elementos HTML generados. El antiguo algoritmo hacía que esto no fuese predecibles. Solución: Alternativa 1. Alternativa 2. La nueva propiedad ClientIdMode de los controles Web. Posible valores AutoID, Static, Predictable y Inherit. varbtn = document.getElementById("<% =Button1.ClientID %>"); varbtn = $('<% =Button1.ClientID %>');
  • 58. Uso de la propiedadClientID DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
  • 59. Control Chart Problema: Se quiere visualizar datos de una manera comprensible. Ejemplo, un reporte de ventas. Solución: Se introdujo el nuevo control Chart con varias opciones de visualización. En tiempo de ejecución se genera una imagen referenciado por el usuario. Estrategia de implementación: (Demo)
  • 60. Control Chart DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
  • 61. SoporteHTML Encoding automático Problema: El desarrollo en ASP.NET está lleno de sentencias <%= expression %> para enviar texto a la salida. Si no se utiliza el método HttpUtility.HtmlEncode, se puede inyectar código JavaScript o HTML. Ataque conocido como XSS (Cross Site Scripting). Solución: Se introdujo la sentencia <%: expression %> generando <%= HttpUtility.HtmlEncode(expression) %>. Si el texto está formateado, entonces se utiliza: <%: new HtmlString("<div>This is already encoded< <%: expression %> <%= HttpUtility.HtmlEncode(expression) %> <%: new HtmlString("<div>This is already encoded</div>") %>
  • 62. HTML Helpersfuertementetipiados Problema: En ASP.NET MVC, se quiere tener HTML Helpers tipiados para detectar errores de compilación y mejor soporte de IntelliSense. Solución: Se introdujeron los HTML Helpers fuertemente tipiados siguiendo la convención Html.HelperNameFor(, pasando como parámetro una expresión lambda. Estrategias de implementación: <%= Html.TextBoxFor(model=>model.ProductName) %> Html.HelperNameFor() <%= Html.TextBoxFor(model=>model.ProductName) %>
  • 63. Mejoras en la validación Problema: La validación de la entrada de los usuarios es un requerimiento de las aplicaciones empresariales. Solución: La infraestructura de validación en ASP.NET MVC 2 está diseñada para tomar ventajas de la validación mediante DataAnnotations, así como integrarse fácilmente con otros marcos de trabajo como CastleValidator o EntLibValidation. Estrategia de implementación: (Demo)
  • 64. Mejoras en la validación DEMO Juan Carlos OlamendyTurruellas Máster en InformáticaEmpresarial Microsof MVP Oracle ACE johnx_olam@fastmail.fm
  • 66.