Professional Documents
Culture Documents
Contenido
Servidor
Cookie
CSS
Javascript
Imgenes
Mviles
Todo
imagen haciendo que todas las imagenes principales de la web se llamen de una sola
vez.
Los Image maps combinan varias imgenes en una sola. El tamao total es de
aproximadamente el mismo, pero la reduccin del nmero de peticiones HTTP acelera
la pgina. El mapa de imagenes slo funcionar si las imgenes son contiguas, como
una barra de navegacin. La creacin de un mapa de imagenes puede ser tedioso y
propenso a errores. El uso de esta tcnica no es recomendable para la navegacin, elija
CSS Sprites antes.
Imgenes utilizar los datos: URL scheme incrustar los datos de la imagen en la pgina
real. Esto puede aumentar el tamao de su documento HTML. La combinacin de
imgenes en su (en cach) las hojas de estilo es una manera de reducir las peticiones
HTTP y evitar el aumento del tamao de sus pginas. Imgenes an no se han apoyado
en todos los principales navegadores.
Reducir el nmero de peticiones HTTP de su web es muy efectivo. Esta es la norma
ms importante para mejorar el rendimiento por primera vez los visitantes. Como se
describe Tenni Theurer en su blog, Browser Cache Usage - Exposed!, el 40-60% de los
visitantes diarios llegan a su site con un cach vaco. Mejorar el tiempo de carga de
estos primeros visitantes es clave para una mejor experiencia del usuario.
top
basado en una medida de aproximacin. Por ejemplo, el servidor con el menor nmero
de saltos o el servidor con ms rpida respuesta es el elegido.
Algunas empresas poseen sus propias CDN, dado que es menos costoso que usar un
proveedor del servicio, como Akamai Technologies, Mirror Image Internet, o Limelight
Networks. Para los sitios web de pequeas empresas pblicas o privadas, el costo del
servicio CDN puede ser prohibitivo, pero dado que su objetivo principal es crecer y
abarcar cada vez ms audiencia, una CDN es necesaria para lograr una rpida respuesta.
En Yahoo!, el contenido esttico de nuestras aplicaciones se traslad desde nuestros
servidores a una CDN, lo cual mejor el tiempo de respuesta a los usuarios en un 20% o
ms. El cambio a una CDN es relativamente fcil, lo que mejorar dramticamente la
velocidad de su sitio web.
top
Para los archivos estticos: implementar "Never expire" como Expires Header
para las prximas visitas
Para los archivos dinmicos: usa el Cache-Control Header mas apropiado para
ayudar al navegador en las llamadas HTTP.
Los diseos de las pginas web se enriquecen cada vez ms, lo cual representa ms
scripts, hojas de estilo, imgenes y animaciones Flash en el contenido. Una visita por
primera vez a la pgina puede contener muchas llamadas HTTP, pero usando un Header
Expires permitir que esos componentes se guardarden en la cache. Esto evita llamadas
HTTP innecesarias en subsecuentes visitas. Los Expires Headers se usan muy a menudo
con las imgenes, pero se debera usar con todos los componentes incluyendo scripts,
hojas de estilo y animaciones Flash.
Los navegadores (y proxies) usan la cach para reducir el nmero y el tamao de las
peticiones HTTP, permitiendo que la pgina web cargue ms rpido. Un servidor web
utiliza las Expires Header en las respuestas HTTP para comunicarle al cliente cunto
tiempo puede estar un componente en la cach. sta es una Expires Header con mucha
duracin, dicindole al nevagdor que esta respuesta no caducar hasta el 15 de Abril del
2010.
Expires: Thu, 15 Apr 2010 20:00:00 GMT
Recurdalo, si usas una Expires header con mucha duracin, debes cambiar el nombre
del archivo del componente cada vez que lo modifiques. En Yahoo! nosotros realizamos
este paso como parte del proceso de construccin: un nmero de versin es embebido en
el nombre del archivo, por ejemplo, yahoo_2.0.6.js.
Usando una Expires header de larga duracin, slo afecta a las pginas vistas despus
de que un usuario ha visitado su sitio. No tiene ningn efecto en el nmero de peticiones
HTTP cuando un usuario visita su sitio por primera vez y la cach del navegador est
vaca. Por lo tanto, la mejora del rendimiento depende en medida de la frecuencia en
que sus usuarios visitan sus pginas con una primed cache. (Una "primed cache" ya
contiene la totalidad de los componentes en la pgina.) Nosotros implantamos esta
medida en Yahoo! y encontramos que el nmero de pginas visistadas con una primed
cache es del 75-85%. El usar una Expires header de larga duracin, le incrementar el
nmero de componentes que son cacheables por el navegador y reutilizarlos en
posteriores visitas a la pgina, sin necesidad de enviar un solo byte al cliente.
top
Gzip Components
Categora: Servidor
El tiempo que le toma transferir una peticin HTTP y su respuesta a travs de la red
pueden ser reducirse significativamente por las decisiones tomadas por los ingenieros en
el "front-end". Es cierto que el ancho de banda, proveedor de Internet, proximidad a los
puntos de intercambio, etc. del usuario, estn fuera del control del equipo de desarrollo.
Pero hay otras variables que afectan los timepos de respuesta. La compresion reduce los
tiempos de respuesta al reducir el tamao de las peticiones HTTP.
A partir de HTTP/1.1, los navegadores web permiten el soporte para compresion con la
cabecera Accept-Encoding en la peticin HTTP.
Accept-Encoding: gzip, deflate
top
top
CSS nos permite monitorear cundo y como una expresin CSS es evaluada. Moviendo
el cursor del ratn alrededor de la pgina puede fcilmente generar ms de 10.000
evaluaciones.
Una forma de reducir el nmero de veces en que son evaluadas tus expresiones CSS es
usar una sola vez las expresiones, donde la primera vez en que la expresin se evala se
establece el estilo de propiedad a un valor explcito, que sustituye a la expresin CSS. Si
el estilo de propiedad debe ser dinmico durante toda la vida til de la pgina, se puede
enfocar una alternativa con eventos en lugar de las expresiones CSS. Si es irreversible el
utilizar expresiones CSS, recuerde que pueden ser evaluadas en miles de veces y podra
afectar el rendimiento de su pgina.
top
de inicio, salvo descargar dinmicamente los archivos externos luego de que la pgina
ha terminado de cargar. Las pginas de referencia a los archivos externos deberan estar
ya en la cach del navegador
top
Una alternativa en php podra ser crear una funcin llamada insertScript.
<?php insertScript("menu.js") ?>
En adicin, para prevenir que el mismo script sea insertado varias veces, esta funcin
debera manejar otros temas con los scripts, tales como aadir el nmero de versin al
nombre del archivo para soportar Expires headers de larga duracin.
top
Configure ETags
Categora: Servidor
Entity tags (ETags) son un mecanismo que servidores y navegadores usan para
determinar si el componente guardado en la cach del navegador coincide con el del
servidor de origen. (Una "entidad" es otra palabra, un "componente": imgenes, scripts,
hojas de estilo, etc.) las ETags se han creado para proveer un mecanismo para validar
entidades, que es ms flexible que la fecha de modificacin. Una ETag es una cadena
que identifica de forma exclusiva una versin especfica de un componente. The only
format constraints are that the string be quoted. El servidor de origen especifica el
componente usando la cabecera ETag.
HTTP/1.1 200 OK
Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT
ETag: "10c24bc-4ab-457e1c1f"
Content-Length: 12195
Luego, si el navegador tiene que validar un componente, utiliza la cabeceraIf-NoneMatch para traspasar la ETag de regreso al servidor de origen. Si la ETag enviada,
devuelve un cdigo 304 es retornada reduciendo la respuestaen 12195 bytes para este
ejemplo.
GET /i/yahoo.gif HTTP/1.1
Host: us.yimg.com
If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT
If-None-Match: "10c24bc-4ab-457e1c1f"
HTTP/1.1 304 Not Modified
El problema con las ETags es que generalmente se construyen utilizando los atributos
que la hacen nica para un determinado sitio alojado en el servidor. Las ETags no
coincidirn cuando un navegador obtiene el componente original de un servidor y luego
intenta validar ese componente en un servidor distinto, una situacin que es muy comn
en sitios web que usan un grupo de servidores para manejar las peticiones. Por defecto,
tanto Apache como IIS embeben datos en la ETag que reducen drsticamente las
posibilidades de xito en la prueba de validez en sitios web con mltiples servidores.
El formato de la ETag para Apache 1.3 y 2.x es inode-size-timestamp. Aunque un
determinado archivo puede estar en el mismo directorio a travs de mltiples servidores,
y tener el mismo tamao, permisos, fecha, etc., su Inodo es diferente de un servidor a
otro.
IIS 5.0 y 6.0 tienen un problema similar con las ETags. El formato para las ETags en
IIS es Filetimestamp:ChangeNumber. Un ChangeNumber es un contador utilizado para
realizar un seguimiento track de los cambios en la configuracin de IIS. Es poco
probable que el ChangeNumber sea el mismo en todos los sitios web alojados en un
servidor IIS.
El resultado final es un ETags generado por Apache e IIS para el mismo componente no
coincidir de un servidor a otro.Si las ETags no coinciden, el usuario no recibe la
pequea respuesta 304 que las ETags han diseado; en cambio, se obtendr unas 200
respuestas normales con todos los datos del componente. Si usted aloja su sitio web en
un solo servidor, esto no es un problema. Pero si usted tiene mltiples servidores para
alojar su sitio web, y est usando Apache o IIS con la configuracin predeterminada de
las ETag, sus usuarios estarn ante pginas cada vez ms lentas, sus servidores tendrn
una sobrecarga, estar consumiendo mucho ancho de banda, y los proxies no estarn
caheando el contenido eficientemente. Incluso si sus componentes tienen una Expires
header de larga duracin, una solicitud GET condicional sigue siendo realizanda
siempre que el usuario presione Recargar o Refrescar.
Si usted no est tomando ventaja de la flexibilidad que proporciona el modelo de
validacin de las ETags, es mejor que simplemente retire la ETag completamente. La
cabecera Last-Modified header validates based on the component's timestamp. And
removing the ETag reduces the size of the HTTP headers in both the response and
subsequent requests. This Microsoft Support article describes how to remove ETags. In
Apache, this is done by simply adding the following line to your Apache configuration
file:
FileETag none
top
Componentes Gzip
Reducir bsquedas DBS
Simplificar Javascript
Evitar Redirecciones
Veamos unm ejemplo. Un cliente de correo basado en web 2.0, puede usar Ajax para
descargar la libreta de direcciones del usuario para realizar un autocompletado. Si el
usuario no ha modificado su libreta de direcciones desde la ltima vez que el usuario
us la aplicacin, la anterior libreta de direcciones podra ser leda desde la cach si esa
respuesta Ajax fue hecha cacheable con una cabecera Expires o Cache-Control de larga
duracin. El navegador debe ser informado de cundo utilizar una libreta de direcciones
guardada en cach versus solicitar una nueva. Esto podra hacerse mediante la adicin
de una fecha a la libreta de direcciones indicando la ltima vez que el usuario modific
su libreta de direcciones, por ejemplo &t=1190241612. Si la libreta de direcciones no ha
sido modificada desde la ltima descarga, la fecha deber ser la misma y la libreta de
direcciones ser leda desde la cache del navegador eliminando una peticin HTTP
extra. Si el usuario ha modificado su libreta de direcciones, la fecha indica que la nueva
URL no se asemeja a la respuesta guardada, as el navegador solicitar las entradas
actualizadas.
Aunque sus respuestas Ajax responses sean creadas dinmicamente, y pueden ser
aplicables a un usuario en particular, an pueden ser cacheadas. Haciendo as, har que
sus aplicaciones Web 2.0 apps sean ms rpidas.
top
Yahoo! search pioneered research and real user testing to prove the benefits of using
this technique.
top
puede mejorarlar con algunos scripts para acicalarla con funcionalidades como el
arrastrar y soltar y animaciones.
top
Precargar componentes
Categora: Contenido
El Preload o precarga puede parecer lo opuesto a la Post-load o carga posterior, pero
actualmente tiene una meta distinta. Por precargar componentes usted puede tomar
ventaja del tiempo en que el navegador est inactivo y as pedir los componentes (como
imgenes, estilos y scripts) que necesitar en el futuro. De esta manera cuendo el
usuario visite la pgina siguiente, usted podra tener muchos de los componentes ya en
la cachdel navegador y la pgina le cargar mucho ms rpido al usuario.
Aqu hay varios tipos de precarga:
top
solo para fijar problemas de diseo? Tal vez hay una mejor forma de hacer sus
marcados ms semnticmente.
<div>
Una gran ayuda son los diseos con YUI CSS utilities: grids.css le puede ayudar con el
diseo, fonts.css y reset.css puede ayudarle a help you strip away the browser's defaults
formatting. Esta es una oportunidad para comenzar de nuevo y pensar sobre el marcado,
Por ejemplo el uso de <div>solo tiene cuando sentido semntico, y no porque crea una
nueva lnea.
Encontrar el nmero de elementos DOM es sencillo, solo escriba en la consola de
Firebug:
document.getElementsByTagName('*').length
pros:
<iframe>
contras:
top
No 404s
Categora: Contenido
Las peticiones HTTP son costosas, de modo que hacer una peticin HTTP y no obtener
un resultado (ej. error 404 Not Found) son totalmente innecesarias y ralentizarn la
experiencia del usuario sin ningn beneficio.
Algunos sitios tienen pginas 404 con contenido til "Quiz est buscando X?", lo cual
es ideal para la experiencia del usuario, pero adems representan un desperdicio de
recursos del servidor (como la base de datos, etc.). Es particularmente malo cuando el
enlace a un javascript externo falla y ello deriva en una pgina 404. Primero, esta
descarga bloquear las dems descargas paralelas. Luego el navegador tratar de
interpretar el cuerpo de la respuesta 404 como si fuera el mismo cdigo javascript,
intentando hallar algo usable en l.
top
top
For more information check the YUI theatre's "High Performance Ajax Applications"
by Julien Lecomte.
top
Algunas veces las pginas tienen menos respuesta a cauda de demasiados manejadores
de eventos adjuntados a diferentes elementos del rbol DOM los cuales son ejecutados
con demasiada frecuencia. Esa es la razn por la que usar delegacin de eventos es una
buena prctica. Si tienes 10 botones dentro de un div, conecte un solo evento a la capa,
en lugar de un manejador para cada botn. Englobe los eventos, de modo que usted
pueda encontrar el evento y averiguar de qu botn se origin.
Adems no es necesario esperar a la carga del evento para comenzar a hacer algo con el
rbol DOM. A menudo todo lo que se necesita es que elemento al cual quiere acceder
est disponible en el rbol. Usted no necesita esperar a a que todas las imgenes se
hayan descargado. El DOMContentLoaded es el evento que usted puede usar e lugar de
onload, pero hasta que est disponible en todos los navegadores usted puede usar la
utilidad YUI, que tiene un mtodoonAvailable.
Para ms informacin dele un vistazo a "the YUI theatre's" "Alto rendimiento en
aplicaciones Ajax" por Julien Lecomte.
top
Optimizar Imgenes
Categora: Imgenes
Despus de que un diseador termina con la creacin de las imgenes de tu sitio web,
hay algunas cosas que usted puede probar antes de subir esas imgenes por FTP a su
servidor.
Usted puede revisar los GIFs y ver si ellos estn usando una paleta de tamao
correspondiente al nmero de colores de la imagen. Con imagemagick es fcil
usando
identify -verbose image.gif
Cuando vea una imagen que usa 4 colores y una paleta de 256, es idnea para
mejorarla.
Pruebe convertir los GIFs a PNGs y vea si reducen su tamao. Muchas veces no
es as. Los desarrolladores a menudo dudan en utilizar PNGs debido al soporte
limitado de los navegadores, pero eso es cosa del pasado. El nico problema real
es la transparencia-alpha en PNGs con color real, pero igual, los GIFs no son de
color verdadero y tampoco soportan transparencia variable. As que cualquier
cosa que pueda hacer un GIF, un PNG con paleta (PNG8) tambin puede
(excepto para animaciones). Este simple comando de imagemagick resulta
totalmente seguro de usar con PNGs:
convert image.gif image.png
"Lo que estamos dicindole es: Dle una oportunidad a los PNGs!"
Ejecute pngcrush (o cualquier otra herramienta optimizadora de PNGs) en todos
sus PNGs. Por ejemplo:
pngcrush image.png -rem alla -reduce -brute result.png
Ejecute jpegtran en todos sus JPEGs. Esta herramienta realiza operaciones con
los JPEG sin prdida de calidad, tales como rotacin, y adems puede ser usado
para optimizar y remover comentarios y otra informacin intil (como la
informacin EXIF) de sus imgenes.
jpegtran -copy none -optimize -perfect src.jpg dest.jpg
top
top
entonces su imagen (mycat.jpg) debera ser ms que una imagen con una medida de
500x500px reducida a 100x100px.
top
top