Detalle del libro
Ver Índice
Introducción
¿Cómo se organiza este libro?
Rendimiento JavaScript
Rendimiento de red
Rendimiento del servidor
Convenciones
Código fuente
Sobre la imagen de cubierta
Capítulo 1. Qué es el rendimiento Ajax
Compromisos
Principios de optimización
Ajax
El navegador
¡Vaya!
JavaScript
Resumen
Capítulo 2. Cómo crear aplicaciones Web que funcionen
¿Cómo de rápido?
Cómo medir la latencia
Problemas de latencia
Ejecución en hilos
Cómo garantizar una respuesta adecuada
Web Workers
Gears
Relojes (timers)
Efectos del uso de la memoria sobre el tiempo de respuesta
Memoria virtual
Solución de problemas de memoria
Resumen
Capítulo 3. Dividir la carga de trabajo inicial
El fregadero
El ahorro de la división
Cómo encontrar la división
Símbolos indefinidos y condiciones de carrera
Ejemplo: Google Calendar
Resumen
Capítulo 4. Cargar scripts sin bloqueos
Bloqueo de scripts
Cómo conseguir que los scripts se comporten bien
XHR Eval
XHR Injection
Script en iframe
Script DOM Element
Script Defer
Etiqueta de scripts document.write
Indicadores de navegador ocupado
Cómo conseguir (o evitar) la ejecución ordenada
Resumen de resultados
Y el ganador es...
Capítulo 5. Acoplamiento de scripts asincrónicos
Ejemplo de código menu.js
Condiciones de carrera
Cómo preservar el orden asincrónicamente
Técnica 1: Escritura de retrollamada en el código fuente
Técnica 2: Window Onload
Técnica 3: Controlador Timer
Técnica 4: Script Onload
Técnica 5: Etiquetas de scripts degradados
Múltiples scripts externos
XHR Gestionado
DOM Element y Doc Write
Solución general
Script único
Múltiples scripts
La asincronía en el mundo real
Google Analytics y Dojo
Utilidad de carga YUI Loader
Capítulo 6. Posicionamiento de scripts internos
Bloqueo de scripts internos
Desplazar los scripts internos al final de la página
Inicialización de la ejecución asíncrona
Utilizar Script Defer
Preservar el orden de CSS y JavaScript
¡Peligro! Hoja de estilo seguida de script interno
La mayoría de las descargas no bloquean los scripts internos
Las hojas de estilo bloquean los scripts internos
Cosas que pasan
Capítulo 7. Cómo escribir código JavaScript eficaz
Gestión del alcance
Utilice variables locales
Aumento de la cadena de alcance
Acceso eficiente a los datos
Control de flujo
Condicionales rápidos
La instrucción if
La instrucción switch
Otra opción: búsqueda de arrays
Los condicionales más rápidos
Bucles rápidos
Mejoras de rendimiento para bucles sencillos
Evite el bucle for-in
Desenrollar bucles
Optimización de cadenas
Concatenación de cadenas
Recortar cadenas
Evite los scripts de ejecución prolongada
Pausas utilizando controladores de tiempo
Patrones de reloj para las pausas
Resumen
Capítulo 8. Escalar con Comet
¿Cómo funciona Comet?
Técnicas de transporte
Llamada selectiva (polling)
Long polling
Forever Frame
Streaming XHR
Transportes futuros
Interdominios
Efectos de la implementación sobre las aplicaciones
Gestionar las conexiones
Medir el rendimiento
Protocolos
Resumen
Capítulo 9. Más allá de la compresión Gzip
¿A quién le importa?
Causas
Un repaso rápido
El culpable
Algunos ejemplos de la "escucha de la tortuga"
¿Cómo podemos ayudar a estos usuarios?
Minimizar el tamaño sin comprimir a la hora de diseñar
Delegación de eventos
Utilizar URL relativos
Eliminar el espacio en blanco
Eliminar las comillas de los atributos
Evite los estilos internos
Aliases de JavaScript
Ahorros reales
Educar a los usuarios
Dirigir la detección del soporte para Gzip
Cómo realizar la prueba
Utilizar el resultado
Medir la efectividad
Capítulo 10. Optimización
Dos pasos para simplificar la optimización de imágenes
Formatos de imagen
Fondo
¿Gráficos o fotografías?
Píxeles y RGB
Truecolor o formatos de imagen de paleta
Transparencia y canal alfa (RGBA)
Entrelazado
Características de los diferentes formatos
GIF
JPEG
PNG
Más información sobre el formato PNG
PNG8, PNG24 y PNG32
Comparación del formato PNG con otros formatos
Comparación con el formato GIF
Comparación con el formato JPEG
Problemas de transparencia del formato PNG
PNG8 y el software de edición de imágenes
Optimización de imágenes automatizada sin pérdidas
Eliminar fragmentos PNG
Pngcrush
Otras herramientas de optimización de imágenes PNG
Eliminación de los metadatos JPEG
convertir GIF a PNG
Optimización de animaciones GIF
Smush.it
JPEG progresivo para imágenes de gran tamaño
ransparencia alfa: evite el uso de AlphaImageLoader
Efectos de la transparencia alfa
Esquinas
AlphaImageLoader
Problemas con AlphaImageLoader
Tierras salvajes: un ejemplo de Yahoo! Search
Transparencia alfa PNG8 progresivamente mejorada
Optimización de sprites
Über-sprite o sprite modular
Sprites CSS altamente optimizados
Otras técnicas de optimización de las imágenes
Evite el escalado de imágenes
Imágenes generadas mediante compresión
Favicons
Iconos de favoritos de Apple Touch
Resumen
Capítulo 11. Fragmentación de dominios predominantes
Ruta crítica
¿Quién utiliza la fragmentación?
Utilizar HTTP/1.0
Implementación de la fragmentación entre dominios
Dirección IP o nombre de huésped
¿Cuántos dominios?
Cómo dividir los recursos
Navegadores recientes
Capítulo 12. Vaciado temprano del documento
Vaciado del encabezado
Buffering de la salida
Codificación fragmentada
Vaciado y compresión Gzip
Otros intermediarios
Bloqueo de dominios durante el vaciado
Los navegadores: el último obstáculo
El vaciado más allá de PHP
Listado de verificación para el vaciado
Capítulo 13. Uso ocasional de los iframes
¿Cuál es el elemento más oneroso del DOM?
Los iframes bloquean el evento onload
Descargas paralelas con iframes
Script antes del iframe
Hoja de estilo antes del iframe
Hoja de estilo después de un iframe
Conexiones por nombre de servidor
Compartir la conexión en iframes
Compartir la conexión entre pestañas y ventanas
Resumen: El coste de los iframes
Capítulo 14. Simplificación de los selectores CSS
Tipos de selectores
Selectores de ID
Selectores de clase
Selectores de tipo
Selectores hermanos adyacentes
Selectores de hijos
Selectores descendientes
Selectores universales
Selectores de atributos
Pseudo-clases y pseudo-elementos
Selectores CSS eficientes
Primero, la derecha
Una de las características que ha consolidado el sector de las nuevas tecnologías es el acceso rápido a la información. La velocidad es un factor fundamental para el éxito de cualquier sitio y por eso las aplicaciones Web hoy en día exprimen las capacidades de los navegadores hasta el límite, con cantidades cada vez mayores de contenidos complejos y un uso amplio de Ajax.
La mayor parte del tiempo que una página Web tarda en descargarse transcurre del lado del cliente. Para que las páginas Web se desplieguen rápidamente y sin dificultades técnicas, es necesario que quienes desarrollen los contenidos dominen ciertas técnicas.
Este libro enseña cómo crear sitios Web fantásticos en lo que a rendimiento se refiere. Podrá reducir en varios segundos el tiempo de carga de sus sitios siguiendo una serie de prácticas y los consejos de los más reconocidos expertos.