Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS



Documentos relacionados
Parte III: AJAX y REST

Javascript parte II: AJAX

HTTP Introducción. Redes de Datos Ing. Marcelo Utard / Ing. Pablo Ronco FACULTAD DE INGENIERIA UNIVERSIDAD DE BUENOS AIRES

Ataques Web Automáticos: Identificación, Engaño y Contraataque

Optimización de Tiempos de Respuesta como Estrategia de Incremento del Número de Visitas

Desarrollo de Aplicaciones Web con AJAX Huibert Aalbers Senior Certified Software IT Architect

Instalar y configurar W3 Total Cache

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha

Redes de Computadoras Práctica 4: World Wide Web

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Introducción a los sitios de SharePoint en Office 365

Desarrollo y servicios web

Queremos asegurarnos de que tu sitio aparezca en los resultados de búsqueda.

Status Enterprise Guía de Usuario. Parte 9 - Alarmas

ATEL ASESORES C.A IP Multimedia Subsystem Prof. Diógenes Marcano

Sociedad de Seguros de Vida del Magisterio Nacional. Sistema de Pignoraciones Web. Manual de Usuario. Marzo, 2012.

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

TRANFERENCIA DE DATOS ENTRE EL SISTEMA INTEGRAL DE GESTIÓN Y EVALUACIÓN (SIGEVA) Y EL CVAR INDICE

EXTENSIÓN DE UML PARA APLICACIONES WEB

DESARROLLO WEB EN ENTORNO CLIENTE

Almacenamiento de CFD de Proveedores

O C T U B R E SOPORTE CLIENTE. Manual de Usuario Versión 1. VERSIÓN 1 P á g i n a 1

Programa. Conceptos básicos: variables, valores y objetos predefinidos, operadores, etc. etc. Callbacks, eval(), etc.

G R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

BANNERS CÍCLICOS CON JAVASCRIPT

Comisión Nacional de Bancos y Seguros

Plataforma E-Learning E- Incorporate

Capitulo VI. Conclusiones.

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Anexos de Bases de Presentación de Propuestas. Consultoría para la implementación de sistemas de gestión de contenidos para comunidades de RedCLARA

MANUAL GESTIÓN CMS ONLINE

COMPRAS CEPAS A TRAVÉS DE INTERNET PORTAL CEPAS

MANUAL TECNICO DE ING BIZBOX

Sistemas de Caché. Para mejorar la velocidad de carga de una web. papers. acens

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Práctica 6 - Página Web

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

GUIA RAPIDA PRIMEROS PASOS CONSTRUCTOR DE SITIOS IPLAN PROFESIONAL CONTENT

Manual del Usuario. Sistema de Help Desk

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

Estándares Técnicos para la Creación, Mantenimiento y Operación de sitios Web del Gobierno del Estado.

Manual de usuario para Facturación Electrónica 2011

Universidad Autónoma de Nayarit

Aporta. Manual de uso para administradores de contenido Este manual le enseñará rápidamente a usar las distintas herramientas de su sitio web

PREGUNTAS FRECUENTES DEL SISTEMA DE FONDOS

Bluecoat Reporter Guía de Usuario

Aplicateca. Manual de Usuario: Ilion Factura Electrónica. Espíritu de Servicio

DISPOSITIVO DE BANDA ANCHA

Contenido. cursos.cl / Teléfono:

INTERCAMBIO DE OBJETOS

Manual de Uso XML-Whois de Neubox. Manual del Sistema de XML Whois de Neubox Versión

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Parte 3 - Consultas SQL + Servicios Web + Índices

MANUAL DE USUARIO COOPERATIVAS

Introducción a la Firma Electrónica en MIDAS

3. Número inicial y número final de mensajes mostrados en la página actual.

MANUAL DE USUARIO SICVECA DESKTOP. Código: R-02-I-IF-312 Versión: de 19 SICVECA DESKTOP. Manual de Usuario Versión 1.0.

Análisis del Proxy-Cache y Reverse-Proxy

SPIP (v.1.8) Manual para redactores Alfredo Sánchez Alberca

Detectar y solucionar infecciones en un sitio web

la red de Internet PRODIGY para poder tener acceso al sistema RAGNVALD vía Internet

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

Capítulo 1 Documentos HTML5

Campos de tareas. Costo real (campo de tareas) Duración real (campo de tareas) Fin real (campo de tareas)

SISTEMA DE REGISTRO DE TRANSACCIONES BURSATILES BAGSA MANUAL DE USUARIO

Manual del uso del DVR por internet

Manual de INTRANET. Introducción Objetivo de este Manual Convenciones y estándares a utilizar Convenciones de formato de texto...

PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO...

UNIVERSIDAD COOPERATIVA DE COLOMBIA POSTGRADO MULTIMEDIA PARA LA DOCENCIA ELECTIVA I CREACIÓN DE AMBIENTES VIRTUALES

Introducción a las Redes de Computadoras. Obligatorio

Servidores Web E2B2C. Leandro Radusky Esteban Lanzarotti. Nov 2014

GUÍA DE COMUNICACIÓN DE PROBLEMAS DE SUMINISTRO DE MEDICAMENTOS DE USO HUMANO

Almacenamiento virtual de sitios web HOSTS VIRTUALES

Forms Composer. Document Producer 1. Document Producer

ENTORNO DE DESARROLLO MICROSOFT.NET 2010

HTML. HyperText Markup Language (Lenguaje de Marcas de Hipertexto)

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

Manual de uso del Taglib de Template Saga

Desarrollo y servicios web

Manual de Usuario Sistema de Médicos. Proyecto:

Manual de usuario para Facturación Electrónica 2011

Luis Villalta Márquez

Manual de Usuario Comprador. Módulo Reportes

Unidad Didáctica 12. La publicación

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

IMÁGENES. Existen una serie de formatos de imagen más recomendables que otros para ser introducidos en una página web.

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

UNIDAD DIDÁCTICA Nº 7 USO DE LOS RECURSOS EN MOODLE

Web. Web Diapositiva 1

Manual de Usuario Administración Web INIA

Gastos Reales Web Manual de Usuario

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

SISTEMA DE RASTREO Y MARCADO ANTIRROBO

Qué necesito saber para tener mi sitio web en Internet?

Para poder navegar en Internet debes primeramente elegir el navegador que vas a utilizar, que puede ser:

SOFTWARE INVENTARIO MOBILIARIO INSTITUCIONAL (SIMI v3.5)

PRÁCTICA FINAL TECNOLOGÍA MULTIMEDIA 3 DE JUNIO DE ENDIAN LIN [Dirección de la compañía]

Círculo de Actualización Profesional

Adobe Dreamweaver CS3 - Curso online Creación profesional de sitios web

Transcripción:

Ingeniería de Ap plicaciones Web Clase 12 Diego C. Martínez Departamento de Ciencias e Ing geniería de la Computación Universidad Nacional del Sur

Web Performance Las aplicaciones web son, a veces, propen nsas a ostentar una performance no óptima: existe un procesamiento remoto el servidor debe comunicarse con el cliente de una manera no bidireccional el cliente solicita recursos adicionales al servidor el cliente debe procesar y mostrar parte de la información La experiencia de uso se ve afectada naturalmente por las tecnologías del cliente, mas las tecnologías del servidor, mas las condiciones de la red. Algunos tests demuestran que al visitar (sin cache) los sitios más conocidos se gasta un 20% de tiempo sólo en el HTML, el resto en los recursos asociados.

Web Performance Si bien algunos de esos factores sin difíciles (sino imposibles) de controlar, existen algunas reglas ampliamente aceptadas que se pueden seguir. La mayoría de ellas centradas en el front-end y en la estructura de los datos. Diferentes autores identifican reglas variadas, aunque en general todas están destinadas a los mismos objetivos: Minimizar la cantidad de información n transferida Minimizar los actos de comunicaciónn cliente-servidor Mejorar el armado y visualización de los componentes en el navegador Evitar usos excesivos de la red Best Practices for Speeding Up Your Web Site http://developer.yahoo.com/performance/rules.html Web Performance Best Practices http://code.google.com/speed/pag com/speed/pag ge-speed/docs/rules_intro.html High Performance Web Sites Steve Souders

Regla: Minimizar pedidos HTTP Hay varias técnicas que pueden ayudarnos CSS Sprites a minimizar los pedidos HTTP Una de las causas más comunes de la abun ndancia de requests es la carga de imágenes del documento. Una técnica que minimiza estos pedidos es CSS Sprites. La idea es utilizar una sola imagen que es visualizada parcialmente. posx posy Se deben especificar la posición de inicio (n negativos) y el tamaño (positivos) como pares de pixels.

Regla: Minimizar pedidos HTTP Imágenes inline Es posible incluir el contenido de una imagen explícitamente en el documento HTML. El atributo src del elemento img define la secuencia de bytes que conforman la imagen, en lugar de la dirección ió del recurso. La imagen debe estar codificada en base64 Es especialmente util cuando la imagen es pequeña. <IMG SRC="data:image/gif;base64 data:image/gif;base64,r0 0lGODlhDAAMALMLAPN8ffBiYvWWlvrK y/fvcpewso9vvfajo+w6o/zl5estlv/8/aaaaaaaaaaaaaaaach5baeaaasalaaaa AAMAAwAAAQzcElZyryTEHyTUgknHd9xGV+ +qksyirkkwdyikdbiatt2h1kblqrfija IKywRgmhwAIlEEADs="> La imagen no podrá quedar en la cache y deberá ser retransmitida si se la necesita. Puede localizarse también en el CSS.img1 { background-image: url(data: image/gif;base64,ageevdfadfasd..);}.img2 { background-image: age: url(data: image/gif;base64,gdefghsagjjj...);} g GJJJ...);}

Regla: Minimizar tiempos de carga Ordenar apropiadamente los recursos CSS y Javascript Los navegadores demoran el renderizado de algunas partes de la página (ya cargada) hasta que algunos scripts terminen de cargarse. Depende de la estructura t de la página. <head> <link rel="stylesheet" es eet type="text/ te t/ /css" href="stylesheet1.css" es eet /> <script type="text/javascript" src="scriptfile1.js" /> <script type="text/javascript" src="scriptfile2.js" /> <link rel="stylesheet" type="text/ /css" href="stylesheet2.css" /> <link rel="stylesheet" type="text/ text/ /css" href="stylesheet3 stylesheet3.css css" /> </head> <head> <link rel="stylesheet" type="text/ /css" href="stylesheet1.css" /> <link rel="stylesheet" type="text/ /css" href="stylesheet2.css" /> <link rel="stylesheet" type="text/ /css" href="stylesheet3.css" /> <script type="text/javascript" src="scriptfile1.js" /> <script type="text/javascript" src="scriptfile2.js" /> </head>

Regla: Minimizar tiempos de carga En general se desea que el navegador mu estre progresivamente los contenidos de la página web solicitada. Funciona como "progress bar". provee una referencia del sist tema trabajando provee una estimación de completitud de la tarea provee algo para ver. El rendering progresivo en el navegador se posterga hasta que los CSS estén completamente cargados. Si los stylesheets no están cargados todavía, es un desperdicio invertir en renderizar contenido pues deberá redibujarse nuevamente. FOUC (Flash of Unstyled Content) Por esa razón los CSS deben ser vincula ados en el <head> del documento.

Regla: Minimizar tiempos de carga En el caso de los scripts, el rendering progresivo se posterga para todo lo que esté debajo del script. El estándar HTTP 1.1, sugiere que los clientes limiten la cantidad de conecciones simultáneas a un servidor: A single-user client SHOULD NOT maintainn more than 2 connections with any server or proxy. (...) These guidelines are intended to improve HTTP response times and avoid congestion Mas aún, cuando se descarga un script, no se abrirán nuevas conexiones. Ubicar los CSS lo más arriba posible. Ubicar los scripts lo más abajo posible.

Regla: Minimizar tiempos de carga estilo1.css javascript1.js j javascript2.js estilo2.css estilo1.css estilo2.css javascript1.js j javascript2.js

Regla: Minimizar tiempos de carga El uso de JavaScript en una página web equiere Cargar el código fuente Implica transferir el recurso externo, si corresponde. Parsear el código descargado Esto ocurre aún cuando no es necesario ejecutar el código desde la IU. Se realiza antes del disparo del evento onload. Es posible minimizar el tiempo de carga de una página difiriendo el parsing del código JavaScript. Utilizar defer o async (HTML5) en el elemento script Estos atributos permiten la carga asincrónica de los scripts. Iniciar la carga de scripts luego del evento onload Una vez que la página ha sido cargada, una función modifica el DOM agregando elementos <scri ipt>. Cargar JavaScript en comentarios o strings Luego se interpretan con la funciónn eval()

Regla: Minimizar tiempos de carga Utilizar defer o async (HTML5) en el elem mento script El atributo defer es utilizado por IE hace varios años, de aceptación general paulatina. El atributo t async es incluido id en HTML5. Los dos permiten cargar los scripts sin detener el parsing de HTML. <script> Script Parser fin net exec <script defer> Script Parser fin <script async> Script Parser fin

Regla: Minimizar tiempos de carga Iniciar la carga de scripts luego del evento onload En cualquier lugar del documento puede agregarse esta porción de JavaScript que provoca la carga de otro script (lazy loa ad) <script> var node = document.createele eate ement('script'); e node.type = 'text/javascript'; node.src = 'example.js'; // insertar en el DOM </script> Esto no bloquea el resto del parsing, aunque puede que la parte inferior i del documento provoque errores de JavaScript antes de que finalice la carga.

Regla: Minimizar tiempos de carga Cargar JavaScript en comentarios o stringss Puede realizarse la carga a mano, via AJAX para luego interpretarla con eval() <script type="text/javascript"> function loadfile(url) { function callback() { if (req.readystate t == 4) { // 4 = Loaded d if (req.status == 200) { eval(req.responsetext); } else { // Error } } }; var req = new XMLHttpRequest(); req.onreadystatechange = callback; req.open("get", url, true); req.send(""); } </script>

Regla: Minimizar tiempos de carga Otra alternativa utilizada por Google: <script id="lazy"> /* Sentencias comentadas de JavaScript */ </script> <script> function lazyload() { var lazyelement = document..getelementbyid('lazy'); y var lazyelementbody = lazyelement.innerhtml; var jscode = stripoutcommentblock(lazyelementbody); eval(jscode); } </script> <div onclick=lazyload()> Lazy Load </div> </html>

Regla: Minimizar pedidos HTTP Evitar multiplicidad de recursos combinable s La existencia de varios recursos adicionales deriva en varios HTTP requests. En particular los scripts y los css podrían combinarse en uno solo o en pocos. Al fin y al cabo serán todos consolidados en el resultado final. No siempre es factible la mezcla. A veces los recursos provienen de diferentes fuentes. Tal vez podrían ser combinados por un script del lado servidor. js js js css js js css css css css

Regla: Minimizar pedidos HTTP En el objetivo de minimizar HTTP requests.. es preferible CSS y JavaScript inline o en recursos externos? Un recurso inline no generará requests adicionales. La respuesta tendrá, sin embargo, mayor tamaño. Un recurso externo generará requests y respuestas adicionales. Sin embargo, estos recursos podrán quedar en la caché del navegador. cuando utilizar uno o el otro? Si la frecuencia de un visitante es poca, preferiblemente inline. Si la frecuencia de un visitante es mucha, preferiblemente externo. Si la permanencia en el sitio es extensa, visitando varias páginas, preferiblemente utilizar recursos externos. Para home-pages como Google o Yahoo! preferiblemente inline.

Regla: Optimizar el uso de la cache Muchos de los recursos utilizados por una página no cambian frecuentemente. CSS, imágenes de encabezados y pie de página, banners, etc Los navegadores proveen una cache donde los recursos pueden ser recuperados en lugar de solicitarlos al servidor nuevamente. Los Internet Service Providers (ISP) también proveen proxies con cache para los recursos transferidos. cliente cache proxy Internet cliente cach he cache El uso de cache (local o proxy) tiene varios beneficios: minimiza la cantidad de HTTP requests. minimiza i i la transferencia de informació ión desde d el servidor. libera ancho de banda para otras aplicaciones.

Regla: Optimizar el uso de la cache Utilizar los encabezados de caché Algunos navegadores utilizan heurísticas para decidir qué queda en la cache. Pero también puede indicarse explícitamente en los headers. Expires: Thu, 15 Jun 2014 20: 00:00 GMT La respuesta indica al cliente la fecha de expiración del recurso transportado Cache-Control: max-age=315360000 La respuesta indica al cliente el períodoo de validez del recurso transportado El navegador NO solicitará el recurso (GET) mientras sea válido o no haya expirado. Puede configurarse el servidor para que fije la fecha o el max-age automáticamente Last-Modified: 15 Sep 2008 17:43:00 GMT La respuesta indica al cliente la fecha de modificación del recurso El cliente puede solicitar el recurso en el futuro con el tag: If-Modified-Since: 15 Sep 2008 17:43:00 GMT

Regla: Optimizar el uso de la cache Pueden utilizarse también Entity Tags (Etag gs). Son headers identificadores de recursos, independientes del tiempo. Incluídos en HTTP 1.1 GET /imagenes/logo.gif HTTP/1.1 Host: unsitio.com HTTP/1.1 200 OK Last-Modified: Tue, 2 Nov 2008 05:06:00 GMT ETag: "10c24bc-4 4ab-457e1c1f" 457e1c1f" Content-Length: 1532 GET /imagenes/logo.gif HTTP/1.1 Host: unsitio.com If-Modified-Since: Tue, 2 Nov 2008 05:06:00 GMT If-None-Match: "10c24bc-4ab-457e1c1f" 4 b 457 1 1f" HTTP/1.1 304 Not Modified

Regla: Optimizar el uso de la cache Los Etags son construídos con particularida ades de cada servidor. Para un mismo recurso, el Etag no será el mismo en IIS que en Apache. No son los mismos incluso en servidores de la misma tecnología. Se utilizan datos como el inode, tamaño y timestamp del recurso en el servidor. Si se provee hosting de multiples servidores, puede ser contraproducente. Es posible configurar la conformación del etag, por ejemplo solo con el timestamp

Regla: Optimizar el uso de la cache Los navegadores pueden variar en el tratamt miento de la cache. Firefox, por ejemplo, guarda TODO en la cache. Inclusive aquello que se recibe con el header Cache-control: no-cache. Asigna a todos los recursos una fechadeexpiración expiración (posiblemente en el pasado) Cuando un recurso en la cache alcanza la expiración, es revalidado o recargado nuevamente. la revalidación confirma la validez del recurso. método fuerte: If-non-match (Etags) método débil: Last-modifiedd respuesta posible: 304 Not modified la recarga implica solicitar completamente el recurso al servidor.

Regla: Minimizar la cantidad de información del servidor Las respuestas desde el servidor transporta an mayor información que los requests. El tamaño de la respuesta también causa un impacto en las demoras totales. Aceptar información comprimida Los navegadores pueden recibir información comprimida: gzip y deflate, indicando Accept-Encoding: gzip p, deflate El servidor indica que la respuesta está comprimida utilizando el header Content-Encoding: t gzip Es ventajoso comprimir HTML, CSS, JavaScript, XML NO es ventajoso comprimir imágenes o doc cumentos PDF. Los servidores (como Apache) incluyen la funcionalidad de compresión y es posible indicar qué recursos deben ser comprimidos antes de enviarse al cliente.

Regla: Minimizar la cantidad de información del servidor Compactar recursos de texto Una técnica simple a observar es mantener en mínimo tamaño los recursos de texto, ya que usualmente contienen información descartable. Esto se denomina a veces minification (com mo consecuencia, uglyfication) En JavaScript es posible eliminar todos los espacios en blanco y los saltos de línea entre sentencias. Existen herramientas para minificar JavaScript: JSMin, Closure Compiler En CSS deben eliminarse los estilos no utilizados. Google Page Speed permite detectar estilos innecesarios para una página En HTML pueden eliminarse i caracter res superfluos. Aun falta un optimizador de HTML automatizado

Regla: Minimizar la cantidad de información del servidor Usar apropiadamente p las imágenes Algunas aplicaciones gráficas agregan información adicional a las imágenes. Algunos formatos son mejores que otros en cuanto a tamaño y definición PNG es mejor que GIF en general. Posee mayor grado de transparencia. No se renderiza apropiadamente en navegadores viejos. GIF es apropiado para imágenes pequeñas (iconos, bullets) JPG debe utilizarse para imágenes grandes y fotografías. No usar nunca BMP y TIFF, formatos sin compresión. Ofrecer imágenes en el tamaño en el que se visualizarán. Usar thumbnails y posponer la imagen en detalle si es necesario Evitar fondos grandes. Aprovec char las propiedades de mosaico. Usar y mantener pequeño el favicon.ico Aunque no lo usemos, el brows ser igual lo pedirá!

Regla: Minimizar redirecciones A veces es necesario realizar redirecciones en los pedidos del cliente. Posibles motivos: los recursos fueron movidos a otra dirección se mantiene alguna convención sobre la estructura de las URLs interconexion entre partes de la aplicación web capturar URLs mal escritas o alias previsibles. Hay dos formas de hacer redirecciones: del lado del servidor, indicando un mensaje 301 Moved permanently 302 Moved temporarily del lado cliente, enviando un mensaje 200 OK con un HTML con el meta-tag <meta http-equiv= refresh content= seg;url > un JavaScript con window.setlocationn En la medida de lo posible, evitar redirecciones. De no ser posible, preferir las del lado servidor.