You are reading

Rediseñando Taringa

This post is written in Spanish: It covers the redesign of the HTML and CSS code for Taringa.net, a site with over 13 million page views daily. In this article, I explain how to save thousands of dollars a day by using simple web standards techniques to reduce the size of the homepage by 50%. A version of this article will be published in English in the coming days.

Luego de leer este artículo en Alt Tab, en donde se entrevista a Alberto Nakayama sobre el funcionamiento de Taringa.net, quedé bastante impresionado con la red de servidores y recursos que el sitio consume actualmente. Para un sitio como Taringa, con más de 13 millones de páginas vistas por mes, mantenerse optimizado es crucial, en el sentido en que esto implica una reducción en el ancho de banda que se consume, y por ende, en los gastos mensuales en servidores y su mantenimiento.

La gran pregunta es, ¿pueden los estándares web ayudar a minimizar los costos de funcionamiento de Taringa? En este post explico como optimizé la página principal, utilizando técnicas simples de estándares web, logrando reducir su tamaño en aproximadamente un 50%, de esta manera, ahorrando miles de dólares mensuales en servidores y su mantenimiento.

El problema

Una rápida inspección al código HTML de la página principal muestra que el sitio no parece tan optimizado como uno quisiera. Algunos puntos que pude identificar:

  • H1, el elemento más importante de una página no está siendo usado. Este elemento se encarga de describir el título de la página, además de proveer valiosos keywords a los buscadores. Tampoco hay una jerarquía de cabeceras (H1, H2, H3) coherente.
  • Semántica pobre. No se usan los elementos de HTML para describir el contenido correspondiente. Una lista de ítems, que lógicamente se marcaría con el elemento UL, en Taringa se reemplaza por una serie de DIVs. DIV se usa para describir una sección de una página —como una cabecera, por ejemplo, o un conjunto de elementos. UL, en cambio, se usa para describir una lista no ordenada de elementos, en el caso de Taringa, podríamos usar UL para describir los últimos posts enviados.
  • Poca optimización para buscadores (SEO). Esto es claramente una consecuencia del punto anterior. Los buscadores aman el contenido, pero también un contenido bien marcado y elementos de HTML bien usados. Mientras más limpio sea el código de una página, mayor indexabilidad tendrá.

En promedio, la página principal de Taringa pesa 50KB. El sitio sirve más de 13 millones de páginas vistas por día, en un cálculo rápido, más de 600GB son transferidos por día (50KB x 13M = 620GB). Haciendo un cálculo rústico de 1GB = 1 dólar, nos revela que Taringa gastaría 600 dólares por día solamente en servir HTML.

Es bueno aclarar que en este artículo no voy a rediseñar la parte visual de Taringa. Hace un tiempo trabajé en Trade2Win.com, un sitio con alrededor de 2 millones de impresiones al mes, y aprendí que en sitios similares con mucho tráfico, las decisiones visuales deben hacerse con muchísimo cuidado porque repercuten directamente en los hábitos de uso de millones de usuarios.

Un retoque pequeño, y al parecer inofensivo, como cambiar el ícono de búsqueda por otro que al parecer funcionaría mejor, puede traer consecuencias desastrosas. Por lo tanto, solo me voy a enfocar en rediseñar el código HTML y CSS de la página principal del sitio, tratando de ser fiel al estilo visual del sitio lo más posible.

Optimización para buscadores

Una de las ventajas de diseñar con estándares viene de regalo: la optimización del sitio en buscadores. Los estándares (en este artículo hablamos solamente de HTML, CSS y JS) fomentan la semántica, y los buscadores en general valoran a las páginas semánticas sobre aquellas que no lo son.

La semántica, en pocas palabras, trata sobre el uso de un elemento determinado de HTML para describir el contenido para el que fue creado: por ejemplo, es lógico que el título de una página se marque con el elemento H1, ya que es el elemento más importante, pero en Taringa se lo reemplaza por una combinación de DIVs y As. Google, en todo caso, no podría encontrar el título de la página ya que no hay un H1 disponible, penalizando su posición en los resultados.

Ahora bien, el listado de últimos posts en la página principal es tal vez lo más interesante del sitio. Cada ítem se describe con un título y uno o dos íconos para una mejor identificación visual de la categoría. Éste es el código que se usa actualmente en Taringa para mostrar los últimos posts:

<div class="link">
<div class="link_titulo">
<span class="categoria arte" alt="Arte" title="Arte"></span>
<a href="" target="_self" title="Firmas A Pedido" alt="
Firmas A Pedido" class="box_link">Firmas A Pedido</a>
</div>
</div>

Claramente, es demasiado. Se usa un serie de SPANs para cada ícono, todo agrupado en un conjunto de DIVs, resultando en código no optimizado. Una propuesta, utilizando estándares web y marcado semántico, podría ser de la siguiente manera:

<li class="icon-art" title="arte">
<a href="">Firmas A Pedido</a>
</li>

Como vemos, cada ítem es marcado con su elemento correspondiente, LI. Luego, el atributo class se encargará de mostrar los íconos correspondientes para cada ítem, salvando preciosos bits y eliminando DIVs sin función.

Este enfoque semántico, del ejemplo, se extiende a toda la página, desde la lista de posts nuevos, hasta los posts más votados e incluso los avisos de Taringa.

De ahora en más, Google no interpretará la página principal de Taringa como una serie de contenido tirado sin descripción, ya que cada elemento ahora describe perfectamente su contenido, proveyendo mejor información para su clasificación e indexación.

Reduciendo la cantidad de pedidos al servidor

Alberto inteligentemente implementa CSS Sprites para mostrar los íconos en cada post. La idea es utilizar un archivo GIF con todos los íconos, en vez de 50 o más archivos separados, de esta manera reduciendo la cantidad de pedidos al servidor y disminuyendo la carga.

En este ejemplo, fuí un poco más allá y extendí el concepto para todas las imágenes del sitio, incluyendo los logos de Taringa/Google en la caja del buscador y los logos del pie de página. Los íconos de los sponsors también fueron optimizados.

Iconos en Taringa.net
Una propuesta de organización de íconos para Taringa

En total, contando íconos, logos y otras imágenes, Taringa usa 14 archivos GIF. Esta optimización de imágenes me permitió reducirlos a solamente 2. En números fríos, una reducción de más del 85% en pedidos al servidor.

Flexibilidad a prueba de balas

Una mención aparte se merecen las imágenes con bordes redondeados, por ejemplo, el marco contenedor de la página, y muy especialmente, las secciones o módulos de Taringa. Es demasiado frustante para un diseñador no tener otra alternativa que aplicar artilugios varios para poder mostrar un simple borde redondeado.

CSS es un lenguaje con muchas fallas, pero en mi opinión, esta es la más grave. Sin embargo, siempre se puede optimizar y simplificar.

A modo de ejemplo, para mostrar el marco contenedor del sitio, en azul, Taringa usa 2 imágenes diferentes (rtopbg.gif y maincontainerbg.gif), además de código no semántico en el HTML para mostrarlas. Aunque este enfoque es totalmente válido, todavía se puede utilizar una sola imágen, y eliminar los DIVs extra en el HTML para una mejor interpretación del documento. Con un poco de CSS luego nos encargaremos de mostrar los bordes de la imágen, ya sea superiores o inferiores, reduciendo los pedidos al servidor en un 50%.

Otros criterios de optimización se aplicaron para otras partes de la página. La clave, siempre, es simplificar.

Las secciones, o módulos de Taringa, requiren una explicación aparte. En el sitio actual, se usan 4 imágenes para mostrar los bordes redondeados: 2 para cada esquina, uno para el fondo del título del módulo, y una imágen para los bordes inferiores (que tiene bordes inferiores para los diferentes anchos de las cajas). Además, claro, de código HTML extra para mostrarlas.

En el ejemplo, aplique lo que se conoce como Progressive Enhacement para reducir el uso de imágenes para módulos de 4 a 1. De hecho, simplificando más aún, podríamos incluso no necesitar imágenes.

La idea básicamente es proveer una mejor versión del sitio para aquellos navegadores avanzados. En este caso, los bordes redondeados para los módulos utilizan una propiedad específica de Safari y Firefox (-webkit-border-radius y -moz-border-radius, respectivamente); sin embargo, los usuarios que naveguen con Internet Explorer igualmente podrán disfrutar del contenido y la funcionalidad del sitio.

Taringa.net zoomeada 4 veces

La página principal de Taringa con zoom x4.

Especial atención se puso para que la página y su contenido luzca mínimamente bien (sobre todo legible) al aumentar el tamaño de texto, como pueden ver en la captura siguiente:

La nueva propuesta de Taringa.net zoomeada 4 veces

El ejemplo de este artículo con zoom x4.

El rediseño de Taringa es ahora indestructible y soporta cambios en el tamaño de texto para aquellos usuarios que lo necesiten, aumentando su accesibilidad.

Si en el futuro se necesita agregar más opciones en la barra de navegación, llegando a las dos lineas de texto, podemos ver que la caja contenedora no se romperá, aguantando cambios en el texto.

Conclusiones

Este es un ejemplo rápido sobre como se podría optimizar el HTML y CSS de Taringa para minimizar los costos en servidores. Como extra, se recodificó la página para una mejor semántica y optimización en buscadores. El resultado es una optimización de 50KB a 26KB en el tamaño del archivo HTML, es decir una reducción del 50%.

Por cuestiones de tiempo, el ejemplo solamente está probado y funcionando en Safari y Firefox. Pero a los fines prácticos, una implementación para las diferentes versiones de Internet Explorer no agregaría demasiados bytes al resultado final.

En números:

Sitio actual Sitio propuesto
Imágenes 29 6
Tablas 2 0
Tamaño en KB 50 26
BW diario 600 GB 300 GB
Gasto en BW diario 600 USD 300 USD
Gasto en BW anual 219000 USD 109500 USD
Optimización en % 50%

Los valores son estimativos.

Este enfoque de optimización se puede aplicar a sitios con mucha demanda de servidor. Por ejemplo, Meneame, Fayerwayer, Clarín y La Nación y demás.

Pueden ver el ejemplo funcionando aquí.

Rodrigo Galindez es un diseñador de Argentina enfocado en el uso de estándares web. Trabaja diariamente para compañias en Londres y los Estados Unidos. Contacto.

Comments for this entry

Rodrigo, Excelente artículo!
Creo que es ejemplar (y aleccionador) en muchos sentidos, no solamente por la claridad conceptual y técnica, sino también porque expone una forma inteligente de obtener tráfico -y nuevos clientes ;-)-

Ahora.. ¿para cuándo el libro de Estándares Web?, amigo! Tenemos mucho que aprender de usted!

Patricio

User

Muy buen análisis. Coincido con la reflexión sobre lo difícil que es implementar cambios visuales en los sitios de visitas masivas y que sean bien recibidos.
Me llama la atención que taringa indexa muy bien en google incluso sin tener en cuenta todo esto.
Un abrazo.

Rodrigo, muy bueno el articulo.
Es realmente muy claro y ejemplificador de lo importante que se vuelve la optimización para ganar escalabilidad.

Solo agregaria a las cuestiones fron-end que describiste, algunos tips client-side y server-side que mejorarian mucho mas la web. Como por ejemplo compactar los js y los css y utilizar cache. Aca dejo un sencillo ejemplo: http://tips.freedev.com.ar/webapps/40/ de como hacerlo

un abrazo

Rodrigo,excelente articulo.
Muy claro y accesible.
Compraba la Users por tus articulos sobre diseño web.
Al bookmark, me va a servir mucho para futuros proyectos.
Abrazo.

PD: te iba a mandar el comentario por twitter. je je je!

Rod, super interesante el articulo, lo lei de principio a fin, me llamo la atencion algunos metodos que estas utilizando y con los cuales aun no estoy familiarizado.

Lo que mas me agrado del articulo es como describes el proceso, por un momento senti la impresion de que me estabas vendiendo el rediseño de Taringa.

Concuerdo con Arturo, seria interesante tener un libro tuyo con el nivel avanzado que vienes manejando de un tiempo para aca.

Un abrazo y seguimos en contacto.

Hola Rodrigo, la verdad un placer leer este articulo de tu blog. Soy el encargado de diseño en Taringa y sorprendentemente varios de los puntos que destacaste en este post nosotros ya los tenemos implementados en nuestra versión Dev, y por suerte otros puntos la verdad es que no los habíamos tenido en cuenta o visto. Muchas gracias por las sugerencias y las vamos a tener en cuenta a la hora de seguir haciendo cambios.

Algunos de los puntos que ya tenemos aplicados son los de código semántico, listas y por orden *en tu ejemplo usabas ul para los tops, nosotros implementamos ol*. Fue uno de los primeros cambios que se hicieron cuando entre a T! así también como la reducción de divs (divitis) en la parte de links hacia los posts acortando en mas de 200 caracteres de código simplificando y reduciendo peso a la hora de servir los HTML, también bajamos la cantidad de pedidos de imagenes a la hora de mostrar los Boxes de una forma bastante parecida a la tuya y aun mas, ahora mismo me encuentro en la etapa de poder escalar toda pantalla interna de taringa mismo, reutilizando código y reciclandolo sin tener un CSS enorme y que en 3 pasos se pueda tener una pantalla totalmente nueva sin que yo tenga que meter mano así le facilito la vida a los programadores a la hora de crear templates.

Es bueno escuchar a las voces que ayudan, sugieren y las criticas constructivas. Y como vos MUY bien decís, es bastante complicado dar un volantazo de diseño a un sitio tan popular sin cambiarle el alma del mismo.

Espero ansioso tu visión y critica de las nuevas sorpresas que se vienen en T! siempre es bueno escucharlas, ya que siempre se puede mejorar..

Saludos

Federico.

Muy buen laburo Rodrigo, un análisis impecable. Por otro lado comparto mi curiosidad con Pablo. Tanto Taringa como PsicoFXP, casi no usan etiquetas Headlines. PsicoFXP incluso antes del último rediseño, usaba mucha tabla y aun así tenía un posicionamiento envidiable.

BTW: 1u$s x 1GB de transferencia me resulta un poco caro para los volúmenes que maneja Taringa. Creo que los costos son considerablemente menores especialmente en Argentina.

[...] Rediseñando Taringa!www.rodrigogalindez.com/archivos/redisenando-taringa/ por mvieyra hace pocos segundos [...]

Es un lindo trabajo para hacer. A tantos sitios les haría falta.

Gracias por los comentarios!

Federico — Muy bueno, genial que Taringa se esté moviendo en este sentido para optimizar el sitio. Si necesitás ayuda avisame.

Lucas — El gasto en GB debería ser menor, pero para redondear y poner un número frío de ejemplo, servía.

eres un mostro. excelente artículo!

Espectacular el post. Quise promoverlo un toque pero en chuenga no me siguieron mucho, no sé si fue culpa mía o que. :P

Pero en fin, lo leí el otro día y nunca pasé a felicitar/agradecer/algo acá en los comentarios.

Muy bueno!

Abrazo!

Gracias por compartir tus ideas y conocimiento, ésto nos amplia el panorama de lo -mucho- que aún hay por hacer en torno a internet.

Saludos desde México.

leo poroli

User

Rodrigo muy buen artículo, aprendí un par de cosas y ordene otras en mi cabeza. Gracias

Y ya que estamos en el tema de la optimización de recursos, te recomiendo que optimices un poco más los jpg de la sección portfolio de este sitio. (hay uno que pesa 300Kb)

Saludos

leo — Gracias por el aviso; en general exporto los JPGs en buena resolución para que el cliente vea los detalles.

Un artículo increíble. Ameno de leer, interesante y realmente conciso. Me has dado la motivación y las directrices para optimizar un sitio al que le hace falta.

¡Gracias!

Todavia no termine de leer el articulo pero voi marcando por parte cosas, qe se yo… “son transferidos por día (50KB x 13M = 620GB). Haciendo un cálculo rústico de 1GB = 1 dólar, nos revela que Taringa gastaría 600 dólares por día solamente en servir HTML.”
Taringa no paga ese valor, por el simple hecho de qe taringa ahora y noc hace cto ya, pertenece a grupo de personas (o duo como prefieran) dueñas de una empresa de hosting, el daño de u$d en hospedaje, no creo que les sea de mucha importancia a ellos, sino ya hubiesemos visto cambios. De Igual manera, la reducción de su ancho de banda ayudaria i mucho ya sea para ellos como para la navegabilidad de los usuarios a la hora de la carga y rapidez de la misma..

[Evitando los errores i caidas que sufre cada tanto.. (mas diria diarios]

det

User

muy muy buen artículo, es realmente un placer encontrar gente que entiende tan bien su trabajo y lo comparte sin celos

saludos

[...] Rodrigo Rediseñando Taringa [...]

Cristian Bullokles

User

Muy muy groso ver como con algo tan simple se pueden hacer tan performante las cosas.

[...] de PuntoGeek que ayudó y a Rodrigo de The Old Fashioned que hizo un post muy copado llamado “Resideñando Taringa” que sirvió para rever y mejorar algunas cosas (entre muchos otros para optimizar y mejorar [...]

Muy buen post Rodrigo, claro sencillo y tremendamente útil para mostrar la importancia de los estándares web.

A ver..

Creo que los problemas en el HTML de Taringa lo vimos muchos hace rato. No creo que este post sea ‘revolucionario’ en cuanto a encontrar problemas ocultos o técnicas desconocidas.
Hasta se podría optimizar aún más el xhtml/css e imagenes en el ejemplo propuesto.

De todas maneras es un buen trabajo, y si esto motiva a un update más veloz a la nueva versión de la web de T! bienvenido sea :)

Nacho

Nacho — Está bien claro en el artículo que usé técnicas simples de HTML.

martin u.

User

Rodrigo : excelente y totalmente idóneo ha sido tu trabajo para este post. Los que recien empezamos en el diseño web necesitamos este tipo de contribuciones a la comunidad . felicitaciones! y saludos desde Cba.

Martin

Muy buen articulo. no te llego ni a los talones

franco

User

Muy bueno che…o_0!
La verdad que a los de T!..no le deve importar mucho el server xq es de ellos!..pero muy completo y practico para los q nos estamos aventurando en este mundo del desarollo web.
Muy lindo el Blog segui asi q vas muy bien!..ha consido con “Arturo” del primer comentario!
Saludos!

Lucia Pettri

User

La verdad esta muy bueno tu articulo..
Yo de todas formas creo que a los de Taringa, no les interesa nada, es mas creo que solo tubieron “SUERTE”.
Igual hay varias paginas del mismo modelo que Taringa, y que van quitandole usuarios a Taringa, como por ejemplo Uimpi.net, ATP.com.ar, Rapiringa.net, entre otras..

Saludos

Antonnn

User

Yo pienso igual que Lucia…
YO me cambie de Taringa a Rapiringa.net, porque me di cuenta que hay mis aportes SI eran validos..

Radick

User

Alguien tiene el codigo fuente de taringa??? por favor mandarlo a mi mail y agradezco: radick@hotmail.es

Luciano

User

¡Excelente Artículo! Estoy totalmente de acuerdo con las técnicas que proponés, pero lamentablemente hay muchos desarrolladores que todavía no entiende estas cosas, o simplemente no les interesa {su maestra de primaria debería pegarles un buen tirón de orejas, jajaja}.

Hay dos puntos, sutilezas simplemente, que me gustaría destacar:

1] El Progressive Enhacement me parece una excelente técnica, pero sinceramente no me gusta para nada usar códigos propietarios para realizar ciertas cosas, soy un ferviente defensor y purista de los estándares, así que esas cosas me hacen zumbar los oídos. Quizás se podría usar CSS 3 para resolver esos problemas, pero los bordes redondeados siempre son un problema. Por lo que es algo que hay que analizar mucho.

2] El uso de «class» cada día me causa un poquito más de rechazo, sinceramente prefiero usar la especificidad de los selectores, aunque reconozco que a veces se debe escribir un poco más para ello, y en sitios como estos de tanto tráfico, cada byte cuenta. Otra cosa que me encanta y resuelve el «problema» {para mi} de usar «class», es el selector CSS de atributos, es algo increíble, pero lástima que IE6 tiene sus mañas y hay que usar algun JS para que lo interprete correctamente.

En fin, excelente artículo, perfectamente redactado, claro, y por sobre todo «correctísimo» en el aspecto técnico.

¡Saludos! {Y te ganaste otro lector, jejeje}

Leave your comment

Please be polite. You can use these HTML tags: STRONG, A, BLOCKQUOTE, CODE



Copyright © 2004–2010 Rodrigo Galindez. All rights reserved. Web hosting by XMundo.

RSS Feed. Proudly powered by Wordpress. Correct at time of going to print.