SlideShare una empresa de Scribd logo
1 de 48
Optimización y Rendimiento Raúl Fraile Beneyto
¿Quién soy? Raúl Fraile Beneyto Co-fundador del proyecto Facultia Programador PHP/Symfony Symfony2 “Evangelist”
 
Are you sure, Fabien? Con cada petición, Symfony:  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Are you sure, Fabien?
 
¿Cómo lo consigue? caché 3 + PHP 5.3.2 + Lazy Loading + ESI + APC...
En Symfony se cachea (casi) todo Archivos de configuración Rutas Traducciones Plantillas Twig Clases / Bundles Anotaciones YAML / XML / Annotation / PHP
 
PHP 5.3
PHP +5.3.2 http://sebastian-bergmann.de/archives/745-Benchmark-of-PHP-Branches-3.0-through-5.3-CVS.html
Lazy loading
Lazy loading Carga de objetos “on demand”, gracias a los “closures”. Si no necesitamos enviar mails, ¿por qué cargar siempre el objeto mailer?
HTTP Cache
HTTP Cache Especificación HTTP/1.1 y el uso de  ESI (Edge Side Includes) , que permite cachear “trozos” de una misma página en tiempos distintos. Es necesario disponer de un proxy caché (p.ej. Varnish o Squid). Symfony lleva uno integrado programado en PHP.
HTTP Cache
HTTP Cache <esi:include src=&quot;http://...&quot; />
HTTP Cache 60' 10' 1'
PHP  Accelerator
PHP Accelerator No es obligatorio, aunque sí recomendable, tener instalado un acelerador (Byte Code Cache), como por ejemplo APC. Extensión de PECL
PHP Accelerator Sin APC ,[object Object],[object Object],[object Object],[object Object],Ejecutar prueba.php:
PHP Accelerator Con APC ,[object Object],[object Object],Ejecutar prueba.php:
PHP Accelerator Problema: APC necesita comprobar si el código ha cambiado para volver a compilar. Máximo rendimiento:  apc.stat=0  en el php.ini
Twig
Twig Twig Extension Los benchmarks mostraban que el método  TwigTemplate::getAttribute()  era uno de los más lentos de Twig y con PHP era dificil optimizarlo más. Se le pidió a Derick Rethans (creador de Xdebug) si podía crear una extensión en C para mejorar el rendimiento. Se prevee que Twig 1.4 la incluya. https://github.com/derickr/twig-ext
Vale, Symfony2 es rápido... …  ¿y nosotros?
Backend   VS   Frontend
Optimización: objetivos Backend Generar la página HTML en el menor tiempo posible. Frontend Que el navegador reciba la página la menor cantidad de datos en el mínimo tiempo.
Backend
Optimización: backend Problemas más comunes Consultas lentas a base de datos Bloquear al usuario con operaciones complejas: llamadas a APIs, envío de emails, procesado de imágenes... Operaciones de I/O “ Copia descontrolada” de variables/objetos
Optimización: backend Symfony2 Profiler y Toolbar al rescate! Versión de Symfony Versión de PHP Xdebug PHP Accelerator Entorno de ejecución Acceso al profiler Controlador::acción|ruta|código HTTP Logs Tiempo y tamaño  de la página Consultas a BD
Optimización: backend Symfony2 Profiler y Toolbar al rescate!
Optimización: backend Base de datos (MySQL) Activar (con precaución) el log de consultas lentas. Cachear resultados con Memcache o Redis. Cuidado con las búsquedas fulltext, utilizar Sphinx. “ EXPLAIN” es tu amigo.
Optimización: backend Operaciones complejas / bloqueantes Eliminar el sincronismo: tareas automáticas o sistemas de cola de mensajes (RabbitMQ). http://vimeo.com/26150500
Optimización: backend Mejoras en Symfony Volcar todas las rutas en un .htaccess (app/console --env=prod router:dump) Autoload con  ApcUniversalClassLoader  (en vez de con UniversalClassLoader).
Frontend
Optimización: frontend Todavía hay mucha gente que navega “lento” ADSL en zonas rurales Conexiones móviles (teléfonos o modems 3G) Redes saturadas Debemos ayudar a estos usuarios y  mejorar la experiencia  de los restantes.
 
Optimización: frontend Problemas más comunes Imágenes muy pesadas. Múltiples archivos CSS/JS sin “minificar”. Demasiadas conexiones. “ Cache headers” mal configuradas.
Optimización: frontend Herramientas indispensables YSlow PageSpeed http://addons.mozilla.org/en-US/firefox/addon/yslow/ http://code.google.com/intl/en/speed/page-speed/
Optimización: frontend Imágenes Programas para optimizar imágenes, algunos de ellos “lossless”: pngcrush (PNG), optiPNG (PNG),  jpegtran (JPG) e ImageMagick (todos). Evitar los GIF, normalmente serán más adecuados los PNG. Combina imágenes para realizar menos peticiones. Optimizar favicon, por debajo de 1Kb.
Optimización: frontend Archivos CSS/JS Combinar varios CSS en un único archivo (igual para los JS). “ Minificar” los CSS/JS para eliminar comentarios, espacios en blanco, etc. Intentar cargar los CSS en el “<head>” y los JS justo antes del “</body>”.
 
 
Optimización: frontend Assetic Assetic es un gestor de “assets” para PHP 5.3. Con sus filtros permite optimizar imágenes, combinar CSS, minificarlos, utilizar preprocesadores CSS (p.ej. LESS)... sin salir de PHP! Viene incluido como bundle en Symfony
Optimización: frontend Assetic: filtros Coffee Script: lenguaje más simple que JS. LESS: mejora CSS con variables, funciones... Google Closure Compiler: optimiza código JS. JSMin: minify de código JS. YUI Compressor: minify de JS y CSS. OptiPNG: optimización de imágenes PNG.
Optimización: frontend Assetic: ejemplo {%   stylesheets   '@FacultiaBundle/Resources/public/css/bootstrap.css' '@FacultiaBundle/Resources/public/css/styles.css' output = 'css/fstyles.css' filter='?yui_css' %} <link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot; {{ asset_url }} &quot; /> {%   endstylesheets   %}
¡Gracias! E-mail:  [email_address] Twitter: @raulfraile Github: raulfraile http://www.slideshare.net/raulfraile ¿Preguntas o nos vamos a comer?

Más contenido relacionado

La actualidad más candente

Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Programacion - Php
Programacion - PhpProgramacion - Php
Programacion - PhpPROD LARD
 
Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)yanburbano
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3ADWE Team
 
Xampp+Wordpress
Xampp+WordpressXampp+Wordpress
Xampp+WordpressAula108
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM Robles
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerIván López Martín
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Iván López Martín
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVCAsier Marqués
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqlJuan Timoteo Cori
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHPjdaniel_7ez
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Manual de php con ejercicios
Manual de php con ejerciciosManual de php con ejercicios
Manual de php con ejercicioswilliam kozisck
 

La actualidad más candente (20)

Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Programacion - Php
Programacion - PhpProgramacion - Php
Programacion - Php
 
Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)Curso php - capitulo 1 (introducción)
Curso php - capitulo 1 (introducción)
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3
 
Conociendo PHP
Conociendo PHPConociendo PHP
Conociendo PHP
 
Introduccion a php
Introduccion a phpIntroduccion a php
Introduccion a php
 
Php
PhpPhp
Php
 
Iniciacion a PHP (I)
Iniciacion a PHP (I)Iniciacion a PHP (I)
Iniciacion a PHP (I)
 
Xampp+Wordpress
Xampp+WordpressXampp+Wordpress
Xampp+Wordpress
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
Php basico
Php basicoPhp basico
Php basico
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVC
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysql
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Manual de php con ejercicios
Manual de php con ejerciciosManual de php con ejercicios
Manual de php con ejercicios
 

Destacado

SST 2014; The Reluctant SME
SST 2014; The Reluctant SMESST 2014; The Reluctant SME
SST 2014; The Reluctant SMEElisa Sawyer
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 
Promoción de la salud y hábitos mentales saludables en los CC PP de Aragón
Promoción de la salud y hábitos mentales saludables en los CC PP de AragónPromoción de la salud y hábitos mentales saludables en los CC PP de Aragón
Promoción de la salud y hábitos mentales saludables en los CC PP de AragónSaresAragon
 
Cómo ejercer una medicina armónica claves para una práctica clínica clemente...
Cómo ejercer una medicina armónica  claves para una práctica clínica clemente...Cómo ejercer una medicina armónica  claves para una práctica clínica clemente...
Cómo ejercer una medicina armónica claves para una práctica clínica clemente...maykamen
 
Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...
Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...
Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...Invest Northern Ireland
 
WorkMobile - Transform your Business
WorkMobile - Transform your BusinessWorkMobile - Transform your Business
WorkMobile - Transform your BusinessWorkMobile®
 
Manuel gonzález prada
Manuel gonzález pradaManuel gonzález prada
Manuel gonzález pradaveguetaaa
 
Cloud Services - The Democratization of IT
Cloud Services - The Democratization of ITCloud Services - The Democratization of IT
Cloud Services - The Democratization of ITLeo Plugge
 
Die Abbildung von Services in der Configuration Management Database
Die Abbildung von Services in der Configuration Management DatabaseDie Abbildung von Services in der Configuration Management Database
Die Abbildung von Services in der Configuration Management DatabaseDigicomp Academy AG
 
Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...
Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...
Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...pliXos GmbH
 
Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?
Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?
Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?NEUROCONSULTAS
 
Portafolios de trabajos gerik
Portafolios de trabajos gerikPortafolios de trabajos gerik
Portafolios de trabajos gerikZerojustice
 
LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...
LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...
LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...ChrisTian Romero
 

Destacado (20)

Cap4 Optimizacion
Cap4 OptimizacionCap4 Optimizacion
Cap4 Optimizacion
 
SST 2014; The Reluctant SME
SST 2014; The Reluctant SMESST 2014; The Reluctant SME
SST 2014; The Reluctant SME
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Vallevapor
VallevaporVallevapor
Vallevapor
 
DB Mobil 03/2013
DB Mobil 03/2013 DB Mobil 03/2013
DB Mobil 03/2013
 
Promoción de la salud y hábitos mentales saludables en los CC PP de Aragón
Promoción de la salud y hábitos mentales saludables en los CC PP de AragónPromoción de la salud y hábitos mentales saludables en los CC PP de Aragón
Promoción de la salud y hábitos mentales saludables en los CC PP de Aragón
 
Metalearn-V2
Metalearn-V2Metalearn-V2
Metalearn-V2
 
Cómo ejercer una medicina armónica claves para una práctica clínica clemente...
Cómo ejercer una medicina armónica  claves para una práctica clínica clemente...Cómo ejercer una medicina armónica  claves para una práctica clínica clemente...
Cómo ejercer una medicina armónica claves para una práctica clínica clemente...
 
Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...
Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...
Need for Innovative Solutions | Thomas Gardiner, Head of Asset Strategy, NI W...
 
WorkMobile - Transform your Business
WorkMobile - Transform your BusinessWorkMobile - Transform your Business
WorkMobile - Transform your Business
 
Manuel gonzález prada
Manuel gonzález pradaManuel gonzález prada
Manuel gonzález prada
 
Cloud Services - The Democratization of IT
Cloud Services - The Democratization of ITCloud Services - The Democratization of IT
Cloud Services - The Democratization of IT
 
Die Abbildung von Services in der Configuration Management Database
Die Abbildung von Services in der Configuration Management DatabaseDie Abbildung von Services in der Configuration Management Database
Die Abbildung von Services in der Configuration Management Database
 
Ocho claves del liderazgo
Ocho claves del liderazgoOcho claves del liderazgo
Ocho claves del liderazgo
 
Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...
Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...
Offshore & Nearshore SW-Entwicklung: Erfahrungen aus der Praxis und Chancen f...
 
BIBLIOGRAFÍA DE JULIO JARAMILLO
BIBLIOGRAFÍA DE JULIO JARAMILLOBIBLIOGRAFÍA DE JULIO JARAMILLO
BIBLIOGRAFÍA DE JULIO JARAMILLO
 
Cap1 Modelizacion
Cap1 ModelizacionCap1 Modelizacion
Cap1 Modelizacion
 
Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?
Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?
Marcadores Biológicos en la Enfermedad de Alzheimer. En donde estamos?
 
Portafolios de trabajos gerik
Portafolios de trabajos gerikPortafolios de trabajos gerik
Portafolios de trabajos gerik
 
LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...
LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...
LA GEOLOGÍA Y LA HISTORIA DE COLISIÓN EN EL MESOZOICO DE LA CORDILLERA REAL, ...
 

Similar a Symfony2: Optimización y rendimiento

Sacándole el jugo a apache
Sacándole el jugo a apacheSacándole el jugo a apache
Sacándole el jugo a apacheJavier Aroche
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony Marcos Quesada
 
Aceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPAceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPJuan Belón Pérez
 
Aceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPAceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPJuan Belón Pérez
 
Aceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPAceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPJuan Belón Pérez
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Desarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.pptDesarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.pptJorgeAntonio32064
 
Web Performance para Magento
Web Performance para MagentoWeb Performance para Magento
Web Performance para MagentoJordi Rosell
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sqlyanetzis
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyJuan Eladio Sánchez Rosas
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfonycsalazart
 
Búsqueda del framework ideal de php
Búsqueda del framework ideal de phpBúsqueda del framework ideal de php
Búsqueda del framework ideal de phprvntone
 

Similar a Symfony2: Optimización y rendimiento (20)

Sacándole el jugo a apache
Sacándole el jugo a apacheSacándole el jugo a apache
Sacándole el jugo a apache
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony
 
Aceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPAceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHP
 
Aceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHPAceleradores Php Final - Programador PHP
Aceleradores Php Final - Programador PHP
 
Aceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPAceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHP
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Rendimiento extremo en php
Rendimiento extremo en phpRendimiento extremo en php
Rendimiento extremo en php
 
Primera sesion
Primera sesionPrimera sesion
Primera sesion
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Tema1
Tema1Tema1
Tema1
 
Desarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.pptDesarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.ppt
 
Web Performance para Magento
Web Performance para MagentoWeb Performance para Magento
Web Performance para Magento
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sql
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Tema1
Tema1Tema1
Tema1
 
Presentación proyecto fin de carrera
Presentación proyecto fin de carreraPresentación proyecto fin de carrera
Presentación proyecto fin de carrera
 
Búsqueda del framework ideal de php
Búsqueda del framework ideal de phpBúsqueda del framework ideal de php
Búsqueda del framework ideal de php
 

Más de Raul Fraile

Aplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyAplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyRaul Fraile
 
Steganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPSteganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPRaul Fraile
 
How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014Raul Fraile
 
How GZIP works... in 10 minutes
How GZIP works... in 10 minutesHow GZIP works... in 10 minutes
How GZIP works... in 10 minutesRaul Fraile
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 appsRaul Fraile
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Sistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosSistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosRaul Fraile
 
Refactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRefactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRaul Fraile
 
Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Raul Fraile
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsRaul Fraile
 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]Raul Fraile
 
DeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsDeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsRaul Fraile
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Raul Fraile
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2Raul Fraile
 

Más de Raul Fraile (16)

Aplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con SymfonyAplicaciones CLI profesionales con Symfony
Aplicaciones CLI profesionales con Symfony
 
Steganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHPSteganography: Hiding your secrets with PHP
Steganography: Hiding your secrets with PHP
 
How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014How GZIP compression works - JS Conf EU 2014
How GZIP compression works - JS Conf EU 2014
 
How GZIP works... in 10 minutes
How GZIP works... in 10 minutesHow GZIP works... in 10 minutes
How GZIP works... in 10 minutes
 
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps$kernel->infect(): Creating a cryptovirus for Symfony2 apps
$kernel->infect(): Creating a cryptovirus for Symfony2 apps
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
Sistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidosSistemas de ficheros para dispositivos embebidos
Sistemas de ficheros para dispositivos embebidos
 
Refactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 appsRefactoring PHP/Symfony2 apps
Refactoring PHP/Symfony2 apps
 
Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2Refactorización de aplicaciones PHP/Symfony2
Refactorización de aplicaciones PHP/Symfony2
 
MidwestPHP Symfony2 Internals
MidwestPHP Symfony2 InternalsMidwestPHP Symfony2 Internals
MidwestPHP Symfony2 Internals
 
Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]
 
DeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internalsDeSymfony 2012: Symfony internals
DeSymfony 2012: Symfony internals
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2
 

Último

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 

Último (20)

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 

Symfony2: Optimización y rendimiento

  • 1. Optimización y Rendimiento Raúl Fraile Beneyto
  • 2. ¿Quién soy? Raúl Fraile Beneyto Co-fundador del proyecto Facultia Programador PHP/Symfony Symfony2 “Evangelist”
  • 3.  
  • 4.
  • 5. Are you sure, Fabien?
  • 6.  
  • 7. ¿Cómo lo consigue? caché 3 + PHP 5.3.2 + Lazy Loading + ESI + APC...
  • 8. En Symfony se cachea (casi) todo Archivos de configuración Rutas Traducciones Plantillas Twig Clases / Bundles Anotaciones YAML / XML / Annotation / PHP
  • 9.  
  • 13. Lazy loading Carga de objetos “on demand”, gracias a los “closures”. Si no necesitamos enviar mails, ¿por qué cargar siempre el objeto mailer?
  • 15. HTTP Cache Especificación HTTP/1.1 y el uso de ESI (Edge Side Includes) , que permite cachear “trozos” de una misma página en tiempos distintos. Es necesario disponer de un proxy caché (p.ej. Varnish o Squid). Symfony lleva uno integrado programado en PHP.
  • 17. HTTP Cache <esi:include src=&quot;http://...&quot; />
  • 18. HTTP Cache 60' 10' 1'
  • 20. PHP Accelerator No es obligatorio, aunque sí recomendable, tener instalado un acelerador (Byte Code Cache), como por ejemplo APC. Extensión de PECL
  • 21.
  • 22.
  • 23. PHP Accelerator Problema: APC necesita comprobar si el código ha cambiado para volver a compilar. Máximo rendimiento: apc.stat=0 en el php.ini
  • 24. Twig
  • 25. Twig Twig Extension Los benchmarks mostraban que el método TwigTemplate::getAttribute() era uno de los más lentos de Twig y con PHP era dificil optimizarlo más. Se le pidió a Derick Rethans (creador de Xdebug) si podía crear una extensión en C para mejorar el rendimiento. Se prevee que Twig 1.4 la incluya. https://github.com/derickr/twig-ext
  • 26. Vale, Symfony2 es rápido... … ¿y nosotros?
  • 27. Backend VS Frontend
  • 28. Optimización: objetivos Backend Generar la página HTML en el menor tiempo posible. Frontend Que el navegador reciba la página la menor cantidad de datos en el mínimo tiempo.
  • 30. Optimización: backend Problemas más comunes Consultas lentas a base de datos Bloquear al usuario con operaciones complejas: llamadas a APIs, envío de emails, procesado de imágenes... Operaciones de I/O “ Copia descontrolada” de variables/objetos
  • 31. Optimización: backend Symfony2 Profiler y Toolbar al rescate! Versión de Symfony Versión de PHP Xdebug PHP Accelerator Entorno de ejecución Acceso al profiler Controlador::acción|ruta|código HTTP Logs Tiempo y tamaño de la página Consultas a BD
  • 32. Optimización: backend Symfony2 Profiler y Toolbar al rescate!
  • 33. Optimización: backend Base de datos (MySQL) Activar (con precaución) el log de consultas lentas. Cachear resultados con Memcache o Redis. Cuidado con las búsquedas fulltext, utilizar Sphinx. “ EXPLAIN” es tu amigo.
  • 34. Optimización: backend Operaciones complejas / bloqueantes Eliminar el sincronismo: tareas automáticas o sistemas de cola de mensajes (RabbitMQ). http://vimeo.com/26150500
  • 35. Optimización: backend Mejoras en Symfony Volcar todas las rutas en un .htaccess (app/console --env=prod router:dump) Autoload con ApcUniversalClassLoader (en vez de con UniversalClassLoader).
  • 37. Optimización: frontend Todavía hay mucha gente que navega “lento” ADSL en zonas rurales Conexiones móviles (teléfonos o modems 3G) Redes saturadas Debemos ayudar a estos usuarios y mejorar la experiencia de los restantes.
  • 38.  
  • 39. Optimización: frontend Problemas más comunes Imágenes muy pesadas. Múltiples archivos CSS/JS sin “minificar”. Demasiadas conexiones. “ Cache headers” mal configuradas.
  • 40. Optimización: frontend Herramientas indispensables YSlow PageSpeed http://addons.mozilla.org/en-US/firefox/addon/yslow/ http://code.google.com/intl/en/speed/page-speed/
  • 41. Optimización: frontend Imágenes Programas para optimizar imágenes, algunos de ellos “lossless”: pngcrush (PNG), optiPNG (PNG), jpegtran (JPG) e ImageMagick (todos). Evitar los GIF, normalmente serán más adecuados los PNG. Combina imágenes para realizar menos peticiones. Optimizar favicon, por debajo de 1Kb.
  • 42. Optimización: frontend Archivos CSS/JS Combinar varios CSS en un único archivo (igual para los JS). “ Minificar” los CSS/JS para eliminar comentarios, espacios en blanco, etc. Intentar cargar los CSS en el “<head>” y los JS justo antes del “</body>”.
  • 43.  
  • 44.  
  • 45. Optimización: frontend Assetic Assetic es un gestor de “assets” para PHP 5.3. Con sus filtros permite optimizar imágenes, combinar CSS, minificarlos, utilizar preprocesadores CSS (p.ej. LESS)... sin salir de PHP! Viene incluido como bundle en Symfony
  • 46. Optimización: frontend Assetic: filtros Coffee Script: lenguaje más simple que JS. LESS: mejora CSS con variables, funciones... Google Closure Compiler: optimiza código JS. JSMin: minify de código JS. YUI Compressor: minify de JS y CSS. OptiPNG: optimización de imágenes PNG.
  • 47. Optimización: frontend Assetic: ejemplo {% stylesheets '@FacultiaBundle/Resources/public/css/bootstrap.css' '@FacultiaBundle/Resources/public/css/styles.css' output = 'css/fstyles.css' filter='?yui_css' %} <link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot; {{ asset_url }} &quot; /> {% endstylesheets %}
  • 48. ¡Gracias! E-mail: [email_address] Twitter: @raulfraile Github: raulfraile http://www.slideshare.net/raulfraile ¿Preguntas o nos vamos a comer?