Google a amenazado con afectar al posicionamiento en las SERP’s según la velocidad de carga de la web. Para mejorar la velocidad de carga hay varias cosas importantes y fáciles de implementar en ASP.NET (Todo basado en que estés usando IIS 7.0). Obviamente asumo que lo básico como que las imágenes estén optimizadas y que el html no es todo comentarios y tablas vacías ya está aplicado.

compresion GzipLa primera de ellas es activar la compresión gzip que basta con entrar al administrador del IIS elegir la Web y activar los dos checkbox de compresión.

Puedes comprobar que estás comprimiento en gzip en http://www.whatsmyip.org/http_compression/

En segundo lugar es interesante que los contenidos estáticos tengan un tiempo de caché definido para el cliente. De forma que los navegadores no se los descarguen de la web cada vez que la visitan. He probado la opción de hacerlo desde la administración del IIS7 pero al probarlo el Page Speed seguía indicando «Leverage browser caching» por lo que mejor recomiendo la opción de cambiar el Web.config incluyendo el código siguiente:

<?xml version="1.0" encoding="UTF-8"?>
   <configuration>
     <system.webServer>
        <staticContent>
           <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="10.00:00:00"  />
        </staticContent>
    </system.webServer>
</configuration>

Puedes probar que la espiración de los contenidos estáticos se está haciendo con el page speed.

El tercer punto consiste en minimizar el número de peticiones que hace el navegador del cliente al servidor. Hay dos puntos importantes:

1º las pequeñas imágenes que se usan repetidamente en la web deberían estar juntas en un sólo archivo de imagen y mostrarlas usando la técnica de css sprites. He buscado con G y este artículo creo que te puede ayudar a implementarlo sin muchas complicaciones. http://www.kabytes.com/programacion/tutorial-basico-sobre-css-sprite/

2º Algunas webs tienen múltiples .js y .css y cada uno de ellos implica una petición al servidor. Es buena idea combinarlos en un solo .js y un solo .css (el css en el head y el js en el pie de la página). Claro que no siempre necesitamos todo lo que hay definido en el css ni todo lo que hay en el js y tenerlos juntos implica mayor complejidad en edición de los mismos.

Puedes utilizar HttpCombiner o si el proyecto te permite gastar unos euros http://wao.mono-software.com te permite hacer todo lo anterior en versiones del iis antiguas. Para verificar que estás comprimiendo los css y los js tendrás que ver el css generado (cargándolo directamente en tu navegador) y en vez de ver el css con sus espacios y tabulaciones encontrarás una sola línea con todo el css junto.

En ASP.NET tienes otras dos formas de acelerar tu web que has de estudiar con cuidado.

1º Optimizar la generación de la web. ¿sabes cuanto le cuesta al server ejecutar cada SQL? ¿Cuanto tiempo le cuesta acceder a disco o el resto de tareas? En una web en desarrollo puedes fácilmente incluir este código en el web.config

<system.web>
<trace enabled=»true» pageOutput=»false» localOnly=»false» requestLimit=»10000″ mostRecent=»true» />
 <system.web>

    <trace enabled="true" pageOutput="true" localOnly="false" requestLimit="10000" mostRecent="true" />

</system.web>

Y en cada punto que quieras chequear el comportamiento de tu página añadir trace.write(SQL) para ver la consulta y el tiempo de ejecución usado. La información que te genera es muy útil para depurar sobretodo ver en que punto es más fácil mejorar la programación de tu web. Aquí tienes un ejemplo de lo que genera el trace.

2º Activar el cacheado de tus páginas. ASP.NET de forma nativa puede cachear todas las páginas dinámicas de tu web por el tiempo que quieras y según los parámetros de url recibidos.

Hay muchas más cosas que se pueden aplicar pero como siempre prefiero centrarme en el 20% de trabajo que proporciona el 80% de los resultados.

¿eres fan de php? puedes explicarme lo genial y buenísimo que es hasta que te aburras pero lo siento php no compite con el asp.NET, como lenguaje de programación el .NET juega en otra liga.