SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Web Performance
Optimization
Esteban Tundidor
@estebanweb
● Presentación
● Definición
● Uso de Caches
○ Tipos de Cache
○ Browser Cache
○ Gzip / Deflate
○ Varnish
○ Caches Internos
○ Memcached
○ Query Cache
● Otras Optimizaciones
○ Sprites
○ Minificación
○ Optimización Querys
Agenda
● Best Practices
○ Profiling
○ Evitar repeticiónes
○ Evitar SQL en un loop
○ Uso "responsable" de la
memoria
○ Cada tipo para su tipo
● Preguntas
Buscar la mejor manera de realizar
una actividad
Optimizar
● SEO
● Usabilidad
● Accesibilidad
● Economía de Recursos
● Salud Mental
Optimizar ayuda en...
Uso de Caches
Se llama caché web al almacenamiento de elementos web
para reducir el ancho de banda consumido, la carga de los
servidores y el retardo en la descarga.
● Browser Cache
● Proxy Cache
● Static Cache
● Internal Cache
● Object Cache
● Query Cache
Tipos de Cache
Tipos de Cache
Jugar con el "Browser Cache"
○ Expires
○ Last-Modified
○ Cache-Control:
■ max-age
■ s-max-age
■ public / private
■ no-store
■ no-cache
■ must-revalidate
Pro:
Menor consumo de bandwidth
Menor tiempo de respuesta
Contra:
Perdida de control
GZip con .htaccess
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI (.*).(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
Pro:
Entre un 50% y 90% de compresión
Menor tiempo de descarga
Contra:
Mayor uso de CPU
Mayor tiempo de respuesta
Varnish (Static Cache)
Varnish es un Acelerador de Aplicaciones Web,
se instala entre nuestro servidor y el cliente.
José Varnish Apache
GET /foto.jpg
GET /foto.jpg
200 OK /foto.jpg
Cache-Control: max-
age:3600200 OK /foto.jpg
Cache-Control: max-
age:3600
cache
miss
Process
Varnish (Static Cache)
Pedro Varnish Apache
GET /foto.jpg
200 OK /foto.jpg
Cache-Control: max-
age:3600
HIT
GET /foto.jpg
200 OK /foto.jpg
Cache-Control: max-
age:3600
HIT
Ana
Varnish (Static Cache)
Pro:
Instalación en 5 minutos
Menor tiempo de respuesta
Reducción de un 95% de los request
Fácil utilización
Gran capacidad de respuesta
Contra:
Perdida de control
Difícil de purgar elementos puntuales
Alto uso de memoria
Lento en "calentarse"
Caches Internos con PHP
<?php
$ahora = time();
$cachefile = 'cache/cache.html';
$ttl = 5;
$datos = 0;
if(!file_exists($cachefile) || ((filemtime($cachefile)+$ttl) < $ahora)){
for ($i=0; $i < 5 ; $i++) {
sleep(1); #Acá va la operación leeenta
$datos++;
}
file_put_contents($cachefile, $datos);
echo 'Guardado en cache: ';
}else{
$datos = file_get_contents($cachefile);
echo 'Leido de cache: ';
}
echo $datos.' en '.(number_format(microtime(true) - $ahora,5));
Caches Internos con PHP
Pro:
3x más rápido que Querys a la BD
Dentro de la misma estructura
No usa networking
Contra:
Uso de Disco
Permisos especiales
Uno por cada WS
Memcached (Object Cache)
Pro:
10x más rápido que la lectura a disco
No necesita permisos especiales
Cache centralizado
Contra:
Uso de Memoria RAM
Uso de Networking
Servicio externo
Query Cache
select * from customers where idClientType = ? ;
Pros:
Rapidez, 238% más rápido si viene del QC
Contra:
Guarda exactamente la sentencia
Está atado a la performance del Servidor
No sirve para subquerys
Depende de nuestra codificación
Otras Optimizaciones
● CSS Sprites
● Unificación y Minificación de archivos
● Optimización Querys
CSS Sprites
#nav li a {background-image:url('../img/image_nav.gif')}
#nav li a.item1 {background-position:0px 0px}
#nav li a:hover.item1 {background-position:0px -72px}
#nav li a.item2 {background-position:0px -143px;}
#nav li a:hover.item2 {background-position:0px -215px;}
Pros:
Menos request HTTP
Menor tamaño
Contra:
Creación del archivo
CSS más complejo
Unificación y Minificación
Pros:
Reducción de Tamaño
Reducción de Request HTTP
Versionado de los archivos
Contras:
Proceso de armado complejo
Sensible a fallos
Complejidad de debugging
Imposible de leer (¿importa?)
Unificación y Minificación
Optimización de Querys
● Explain
● Truco del IN relacionado
● INNOdb Vs. MyISAM
● JOINS
Best Practices - Profiling
https://code.google.com/p/webgrind/
Best Practices - Evitar repeticiónes
for($i=0;i<=count($x);$i++){
…
}
$count = count($x);
for($i=0;i<=$count;$i++){
…
}
Best Practices - Resumir SQL
foreach ($userList as $user) {
$query = 'INSERT INTO users (first_name,last_name)
VALUES("' . $user['first_name'] . '", "' . $user['last_name'] .
'")';
mysql_query($query);
}
Best Practices - Resumir SQL
$userData = array();
foreach ($userList as $user) {
$userData[] = '("' . $user['first_name'] . '", "' . $user
['last_name'] . '")';
}
$query = 'INSERT INTO users (first_name,last_name)
VALUES' . implode(',', $userData);
mysql_query($query);
Best Practices - Uso "responsable" de la
memoria
$description = strip_tags($_POST['description']);
echo $description;
echo strip_tags($_POST['description']);
Best Practices - Herramientas
● WebGrind
● Loader.io
● Google Page Speed
● Yahoo! YSlow
● pingdom.com
● Web Page Analyzer ( websiteoptimization.com/services/analyze )
● redbot.org
● Sentido Común... mucho.
Best Practices - Siempre se puede optimizar
Mayo 2008
Best Practices - Siempre se puede optimizar
Agosto 2008
Best Practices - Siempre se puede optimizar
Agosto 2009
¿Preguntas?
¡Gracias!
@estebanweb

Más contenido relacionado

La actualidad más candente

Front-end: Diseñar webs rápidas, flexibles y potentes
Front-end: Diseñar webs rápidas, flexibles y potentesFront-end: Diseñar webs rápidas, flexibles y potentes
Front-end: Diseñar webs rápidas, flexibles y potentesRomán Hernández
 
Sacándole el jugo a apache
Sacándole el jugo a apacheSacándole el jugo a apache
Sacándole el jugo a apacheJavier Aroche
 
Seguridad en WordPress
Seguridad en WordPressSeguridad en WordPress
Seguridad en WordPressPedro Santos
 
Zend Framework 2 y MongoDB
Zend Framework 2 y  MongoDBZend Framework 2 y  MongoDB
Zend Framework 2 y MongoDBEl Taller Web
 
Seguridad WordPress Meetup Majadahonda
Seguridad WordPress Meetup MajadahondaSeguridad WordPress Meetup Majadahonda
Seguridad WordPress Meetup MajadahondaPedro Santos
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)PiXeL16
 
Workshop "Técnicas de optimización web" en Webprendedor 2011
Workshop "Técnicas de optimización web" en Webprendedor 2011Workshop "Técnicas de optimización web" en Webprendedor 2011
Workshop "Técnicas de optimización web" en Webprendedor 2011Rodrigo Ayala
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSAlberto Gimeno
 
Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Maximiliano Firtman
 
Presentacion optimiza tu vps
Presentacion optimiza tu vpsPresentacion optimiza tu vps
Presentacion optimiza tu vpsservidoresdedic
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Pilmee Gates
 

La actualidad más candente (20)

Front-end: Diseñar webs rápidas, flexibles y potentes
Front-end: Diseñar webs rápidas, flexibles y potentesFront-end: Diseñar webs rápidas, flexibles y potentes
Front-end: Diseñar webs rápidas, flexibles y potentes
 
Sacándole el jugo a apache
Sacándole el jugo a apacheSacándole el jugo a apache
Sacándole el jugo a apache
 
Seguridad en WordPress
Seguridad en WordPressSeguridad en WordPress
Seguridad en WordPress
 
Introduccion a Node.js
Introduccion a Node.jsIntroduccion a Node.js
Introduccion a Node.js
 
Zend Framework 2 y MongoDB
Zend Framework 2 y  MongoDBZend Framework 2 y  MongoDB
Zend Framework 2 y MongoDB
 
Seguridad WordPress Meetup Majadahonda
Seguridad WordPress Meetup MajadahondaSeguridad WordPress Meetup Majadahonda
Seguridad WordPress Meetup Majadahonda
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)
 
Workshop "Técnicas de optimización web" en Webprendedor 2011
Workshop "Técnicas de optimización web" en Webprendedor 2011Workshop "Técnicas de optimización web" en Webprendedor 2011
Workshop "Técnicas de optimización web" en Webprendedor 2011
 
Gapand2017 rediscahe
Gapand2017 rediscaheGapand2017 rediscahe
Gapand2017 rediscahe
 
La Caché
La CachéLa Caché
La Caché
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 
Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020
 
Pruebas del servicio web
Pruebas del servicio webPruebas del servicio web
Pruebas del servicio web
 
Herramientas de Back-End
Herramientas de Back-EndHerramientas de Back-End
Herramientas de Back-End
 
Presentacion optimiza tu vps
Presentacion optimiza tu vpsPresentacion optimiza tu vps
Presentacion optimiza tu vps
 
Introducción a Protocol Buffers
Introducción a Protocol BuffersIntroducción a Protocol Buffers
Introducción a Protocol Buffers
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
 
Apache
Apache Apache
Apache
 

Destacado

Destacado (11)

Ma nual de precauciones primero axulio de los niños
Ma nual   de precauciones  primero  axulio   de los   niñosMa nual   de precauciones  primero  axulio   de los   niños
Ma nual de precauciones primero axulio de los niños
 
2016(BPG - Counsel MGMT EXP)
2016(BPG - Counsel MGMT EXP)2016(BPG - Counsel MGMT EXP)
2016(BPG - Counsel MGMT EXP)
 
Cortana, non solo un' assistente vocale
Cortana, non solo un' assistente vocaleCortana, non solo un' assistente vocale
Cortana, non solo un' assistente vocale
 
Tugas 2 rekweb
Tugas 2 rekwebTugas 2 rekweb
Tugas 2 rekweb
 
Ecosistemas
EcosistemasEcosistemas
Ecosistemas
 
Innovation cluster excellence
Innovation cluster excellenceInnovation cluster excellence
Innovation cluster excellence
 
Amarre con ropa interior
Amarre con ropa interiorAmarre con ropa interior
Amarre con ropa interior
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
汪志堅教授簡介
汪志堅教授簡介汪志堅教授簡介
汪志堅教授簡介
 
La cadena alimenticia
La cadena alimenticiaLa cadena alimenticia
La cadena alimenticia
 
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a Arduino
 

Similar a Web Performance Optimization: Caches, Minificación y más para mejorar velocidad

High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web SitesopenfinanceDev
 
Optimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBF
Optimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBFOptimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBF
Optimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBFDarío BF
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadIván Campaña Naranjo
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoCharla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoMarcos Ramajo
 
Escalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLEscalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLLorena Fernández
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Oriol Jiménez
 
C:\fakepath\optimizacion
C:\fakepath\optimizacionC:\fakepath\optimizacion
C:\fakepath\optimizacionGonzalo C.
 
Optimizando Sitios Web
Optimizando Sitios WebOptimizando Sitios Web
Optimizando Sitios WebGrupo Mediabox
 
Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress Dani Reguera Bakhache
 
Cookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internetCookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internetAlejandro Ramos
 
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...Juan Carlos Olivares Rojas
 
Rendimiento y velocidad, acelera tu sitio WordPress
Rendimiento y velocidad, acelera tu sitio WordPressRendimiento y velocidad, acelera tu sitio WordPress
Rendimiento y velocidad, acelera tu sitio WordPressLibreCon
 

Similar a Web Performance Optimization: Caches, Minificación y más para mejorar velocidad (20)

High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web Sites
 
Optimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBF
Optimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBFOptimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBF
Optimiza WordPress y a correr - WordCamp Cantabria 2015 - @DarioBF
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidad
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoCharla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
 
Alternativas de hosting para WordPress
Alternativas de hosting para WordPressAlternativas de hosting para WordPress
Alternativas de hosting para WordPress
 
Escalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLEscalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQL
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)
 
C:\fakepath\optimizacion
C:\fakepath\optimizacionC:\fakepath\optimizacion
C:\fakepath\optimizacion
 
Optimizando Sitios Web
Optimizando Sitios WebOptimizando Sitios Web
Optimizando Sitios Web
 
Mejores practicas para acelerar sitios web
Mejores practicas para acelerar sitios webMejores practicas para acelerar sitios web
Mejores practicas para acelerar sitios web
 
Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress
 
Varnish http cache
Varnish http cacheVarnish http cache
Varnish http cache
 
Carlos Pascual #WPvalladolid 2014
Carlos Pascual #WPvalladolid 2014Carlos Pascual #WPvalladolid 2014
Carlos Pascual #WPvalladolid 2014
 
Webperf wordpress
Webperf wordpressWebperf wordpress
Webperf wordpress
 
Cookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internetCookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internet
 
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
Arquitectura de una Caché para Almacenar Sitios Web en Dispositivos Móviles P...
 
HTML5-Aplicaciones web
HTML5-Aplicaciones webHTML5-Aplicaciones web
HTML5-Aplicaciones web
 
Rendimiento y velocidad, acelera tu sitio WordPress
Rendimiento y velocidad, acelera tu sitio WordPressRendimiento y velocidad, acelera tu sitio WordPress
Rendimiento y velocidad, acelera tu sitio WordPress
 

Web Performance Optimization: Caches, Minificación y más para mejorar velocidad

  • 2. ● Presentación ● Definición ● Uso de Caches ○ Tipos de Cache ○ Browser Cache ○ Gzip / Deflate ○ Varnish ○ Caches Internos ○ Memcached ○ Query Cache ● Otras Optimizaciones ○ Sprites ○ Minificación ○ Optimización Querys Agenda ● Best Practices ○ Profiling ○ Evitar repeticiónes ○ Evitar SQL en un loop ○ Uso "responsable" de la memoria ○ Cada tipo para su tipo ● Preguntas
  • 3. Buscar la mejor manera de realizar una actividad Optimizar
  • 4. ● SEO ● Usabilidad ● Accesibilidad ● Economía de Recursos ● Salud Mental Optimizar ayuda en...
  • 5. Uso de Caches Se llama caché web al almacenamiento de elementos web para reducir el ancho de banda consumido, la carga de los servidores y el retardo en la descarga.
  • 6. ● Browser Cache ● Proxy Cache ● Static Cache ● Internal Cache ● Object Cache ● Query Cache Tipos de Cache
  • 8. Jugar con el "Browser Cache" ○ Expires ○ Last-Modified ○ Cache-Control: ■ max-age ■ s-max-age ■ public / private ■ no-store ■ no-cache ■ must-revalidate Pro: Menor consumo de bandwidth Menor tiempo de respuesta Contra: Perdida de control
  • 9. GZip con .htaccess <IfModule mod_deflate.c> SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI (.*).(?:gif|jpe?g|png)$ no-gzip dont-vary </IfModule> Pro: Entre un 50% y 90% de compresión Menor tiempo de descarga Contra: Mayor uso de CPU Mayor tiempo de respuesta
  • 10. Varnish (Static Cache) Varnish es un Acelerador de Aplicaciones Web, se instala entre nuestro servidor y el cliente. José Varnish Apache GET /foto.jpg GET /foto.jpg 200 OK /foto.jpg Cache-Control: max- age:3600200 OK /foto.jpg Cache-Control: max- age:3600 cache miss Process
  • 11. Varnish (Static Cache) Pedro Varnish Apache GET /foto.jpg 200 OK /foto.jpg Cache-Control: max- age:3600 HIT GET /foto.jpg 200 OK /foto.jpg Cache-Control: max- age:3600 HIT Ana
  • 12. Varnish (Static Cache) Pro: Instalación en 5 minutos Menor tiempo de respuesta Reducción de un 95% de los request Fácil utilización Gran capacidad de respuesta Contra: Perdida de control Difícil de purgar elementos puntuales Alto uso de memoria Lento en "calentarse"
  • 13. Caches Internos con PHP <?php $ahora = time(); $cachefile = 'cache/cache.html'; $ttl = 5; $datos = 0; if(!file_exists($cachefile) || ((filemtime($cachefile)+$ttl) < $ahora)){ for ($i=0; $i < 5 ; $i++) { sleep(1); #Acá va la operación leeenta $datos++; } file_put_contents($cachefile, $datos); echo 'Guardado en cache: '; }else{ $datos = file_get_contents($cachefile); echo 'Leido de cache: '; } echo $datos.' en '.(number_format(microtime(true) - $ahora,5));
  • 14. Caches Internos con PHP Pro: 3x más rápido que Querys a la BD Dentro de la misma estructura No usa networking Contra: Uso de Disco Permisos especiales Uno por cada WS
  • 15. Memcached (Object Cache) Pro: 10x más rápido que la lectura a disco No necesita permisos especiales Cache centralizado Contra: Uso de Memoria RAM Uso de Networking Servicio externo
  • 16. Query Cache select * from customers where idClientType = ? ; Pros: Rapidez, 238% más rápido si viene del QC Contra: Guarda exactamente la sentencia Está atado a la performance del Servidor No sirve para subquerys Depende de nuestra codificación
  • 17. Otras Optimizaciones ● CSS Sprites ● Unificación y Minificación de archivos ● Optimización Querys
  • 18. CSS Sprites #nav li a {background-image:url('../img/image_nav.gif')} #nav li a.item1 {background-position:0px 0px} #nav li a:hover.item1 {background-position:0px -72px} #nav li a.item2 {background-position:0px -143px;} #nav li a:hover.item2 {background-position:0px -215px;} Pros: Menos request HTTP Menor tamaño Contra: Creación del archivo CSS más complejo
  • 19. Unificación y Minificación Pros: Reducción de Tamaño Reducción de Request HTTP Versionado de los archivos Contras: Proceso de armado complejo Sensible a fallos Complejidad de debugging Imposible de leer (¿importa?)
  • 21. Optimización de Querys ● Explain ● Truco del IN relacionado ● INNOdb Vs. MyISAM ● JOINS
  • 22. Best Practices - Profiling https://code.google.com/p/webgrind/
  • 23. Best Practices - Evitar repeticiónes for($i=0;i<=count($x);$i++){ … } $count = count($x); for($i=0;i<=$count;$i++){ … }
  • 24. Best Practices - Resumir SQL foreach ($userList as $user) { $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")'; mysql_query($query); }
  • 25. Best Practices - Resumir SQL $userData = array(); foreach ($userList as $user) { $userData[] = '("' . $user['first_name'] . '", "' . $user ['last_name'] . '")'; } $query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData); mysql_query($query);
  • 26. Best Practices - Uso "responsable" de la memoria $description = strip_tags($_POST['description']); echo $description; echo strip_tags($_POST['description']);
  • 27. Best Practices - Herramientas ● WebGrind ● Loader.io ● Google Page Speed ● Yahoo! YSlow ● pingdom.com ● Web Page Analyzer ( websiteoptimization.com/services/analyze ) ● redbot.org ● Sentido Común... mucho.
  • 28. Best Practices - Siempre se puede optimizar Mayo 2008
  • 29. Best Practices - Siempre se puede optimizar Agosto 2008
  • 30. Best Practices - Siempre se puede optimizar Agosto 2009