SlideShare una empresa de Scribd logo
1 de 65
Descargar para leer sin conexión
HTTP Cache + Varnish
Web sites performance optimization
@desarrolla2

               Desarrollador
                 PHP desde
               septiembre de
                   2007




                Buscando
                 curro!!!
¿Por qué?

GWT: Asegura que mi sitio es lento




On average, pages in your site take 2.2 seconds to load (updated on Mar
21, 2012). This is faster than 63% of sites.
HTTP Cache
Web sites performance optimization
¿Por qué?

"Es (posiblemente) el
sistema de cache que
más eficaz y fácil de
    implementar."
        - Daniel González
Objetivo

 "Nunca generar la
misma respuesta dos
     veces."
             - Alguien
HTTP Cache

  "Es un protocolo de cache que debería ser
 respetado por todas las capas intermedias y
            por los navegadores."
HTTP Cache: Freshness


    "En la mayoría de
   los casos es la mejor
   estrategia de cache."
HTTP Cache: Freshness

Cache-Control
  Public, Private
  No-Cache, No-store
  max-age, s-maxage
  must-revalidate
  // ..
      Cache-Control: Public, s-maxage:3600, must-
  revalidate
Expires
     Expires Tue, 20 Mar 2012 11:21:13 GMT
HTTP Cache: Freshness

Pragma
    Pragma: Private, max-age:3600
HTTP Cache: Freshness


$response->setMaxAge(15 * 60); $response->setExpires
(new DateTime('now + 15 minutes'));
// ..
HTTP Cache: Freshness

header("Cache-Control:...");
header("Pragma:...");
// ..
HTTP Cache: Freshness

<meta http-equiv="Cache-Control" content="max-
age=3600, private">
HTTP Cache: Freshness


<filesMatch ".(js|css)$">
    Header set Cache-Control "private, max-age=7200"
</filesMatch>
HTTP Cache: Validation


     "Cuando no puedes
    predecir la frecuencia
   con la que cambian tus
          recursos."
HTTP Cache: Validation

Last-Modified
  Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT


Etag
  ETag: "3e86-410-3596fbbc"
HTTP Cache: Validation


$response->setLastModified(new DateTime('2000-01-
01'));
$response->setEtag(md5($response->getContent()));
// ..

$response->setCache(array());
HTTP Cache: Validation


<filesMatch ".(gif|jpg|jpeg|png|mpg|avi)$">
    Header set Last-modified "Mon, 03 Jan 2011 13:02:54
GMT"
</filesMatch>
HTTP Cache



HTTP/1.1 200 OK
Date: Fri, 30 Oct 1998 13:19:41 GMT
Cache-Control: public, s-maxage=3600
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Last-Modified: Mon, 29 Jun 1998 02:28:12 GMT
ETag: "3e86-410-3596fbbc"
// ..
HTTP Cache: Friendly URL's


http://misite.com/es/home-user/welcome/



http://misite.com/welcome.php/?
country=es&usertype=home-user
ESI

      <esi:include src="
      http://misite.
      com/header.php" />



      ● include_partial()
      ● {% render %}


      http://www.w3.
      org/TR/esi-lang
ESI
Estandar no es claro


   Puede ser ignorado


Una cache en cada cliente


   Invalidar la cache
http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
Varnish
HTTP Accelerator
¿Por que?

   "Varnish is a web
       application
accelerator. You install
it in front of your web
application and it will
       speed it up
     significantly."
¿Por que?




"Rápido, Flexible y
   Escalable"
Varnish: http cache
¿Que es?




           Reverse Proxy

           Proxy Cache
¿Que es?




           Fail Over System

            Load Balancer
Caracteristicas


       Obedece cabeceras HTTP Cache

         Cache de recursos estáticos

    Modifica las cabeceras y las cookies de
           peticiones y respuestas
¿Quien?
¿Cómo?
Instalación
sudo apt-get install varnish
sudo vim /etc/varnish/default.vcl
   backend default {
       .host = "127.0.0.1";
       .port = "8080";
   }




sudo vim /etc/apache2/ports.conf
Listen 8080
Instalación
sudo vim /etc/default/varnish
START=yes //
DAEMON_OPTS="-a :8080  // puerto
      -T localhost:6082 
      -f /etc/varnish/default.vcl  // vlc script
      -S /etc/varnish/secret  //cli autentication
         -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"
//storage, malloc mantendría los objetos en memoria




  https://www.varnish-cache.org/docs/2.
  1/installation/install.html
Varnish: assets
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
    Header set Cache-Control "max-age=2592000"
</FilesMatch>
<FilesMatch ".(css|js)$">
    Header set Cache-Control "max-age=604800"
</FilesMatch>




$ ab -n 2000 -c 100 http://sfm.desarrolla2.
com/bundles/sfmwebsite/images/titulo-symfony-madrid.png
Varnish Configuration Language

Subroutines
    vcl_recv / vcl_fetch / vcl_deliver / vcl_hash / vcl_miss
/ vcl_hit / vcl_error / ...
Actions
   pass / lookup / pipe / deliver
Objects
   req / beresp / obj
Varnish: cookies
sub vcl_recv {
   if (req.request == "GET" && req.url ~ ".(jpg|jpeg|gif|png)$") {
         unset req.http.Cookie;
         return(lookup);
    }
}

sub vcl_fetch {
    if (req.url ~ ".(jpg|jpeg|gif|png)$") {
          unset beresp.http.set-cookie;
    }
}
Varnish: Headers

sub vcl_fetch {
    if (!beresp.cacheable) {
    return (pass);
    }
    set beresp.http.Server = "SFM Server 1.0" ;
    return (deliver);
}
Varnish: Headers

sub vcl_deliver {
    if (obj.hits > 0) {
         set resp.http.X-Cache = "HIT " obj.hits;
    } else {
         set resp.http.X-Cache = "MISS";
    }
    return (deliver)
}




$ curl - I http://sfm.desarrolla2.com/bundles/sfmwebsite/images/titulo-
symfony-madrid.png
Varnish: invalidar la caché

acl purge{
    "localhost";
     "192.168.55.0"/24;
}

if (req.request == "PURGE") {
      if (!client.ip ~ purge) {
            error 405 "Not allowed.";
      }
}
Varnish: invalidar la caché
sub vcl_hit {
  if (req.request == "PURGE") {
     set obj.ttl = 0s;
     error 200 "Purged";
  }
}

sub vcl_miss {
  if (req.request == "PURGE") {
     error 404 "Not purged";
  }
}
Varnish vs Memcached
                       En el
                       momento en
                       el que el
                       recurso ha
                       caducado.




                       publico.es
Symfony2 Reverse Proxy
Varnish: invalidar la caché
<?php

require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';

use SymfonyComponentHttpFoundationRequest;

$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
$kernel->handle(Request::createFromGlobals())->send();
Conclusiónes


   "con HTTP Cache + Varnish el
  rendimiento de tu sitio mejorará
          notablemente"
Conclusiónes


 "HTTP Cache + Varnish por si solo
  son insuficiente, necesitas utilizar
otras técnicas, como carga asincrona
  de recursos, minimización, ect..."
Varnish http cache
Varnish http cache
Varnish http cache

Más contenido relacionado

La actualidad más candente

Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvmsuperserch
 
Aspnet40 Cache Extensibility
Aspnet40 Cache ExtensibilityAspnet40 Cache Extensibility
Aspnet40 Cache ExtensibilityChristian Strevel
 
Web Performance para Magento
Web Performance para MagentoWeb Performance para Magento
Web Performance para MagentoJordi Rosell
 
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...Adrián Lois
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para TodosMariano Iglesias
 
Instalación de un servicio de proxy, Squid
Instalación de un servicio de proxy, SquidInstalación de un servicio de proxy, Squid
Instalación de un servicio de proxy, SquidJavichu Moya
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016SpanishPASSVC
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoCarlos Granados
 
Sandbox para ejercicios de programación
Sandbox para ejercicios de programaciónSandbox para ejercicios de programación
Sandbox para ejercicios de programaciónMario Garcia-Valdez
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012dbLearner
 
Informacion para aportar
Informacion para aportarInformacion para aportar
Informacion para aportarjorgefchc2
 

La actualidad más candente (17)

Manual de uso_de_squid
Manual de uso_de_squidManual de uso_de_squid
Manual de uso_de_squid
 
Aspectos nodejs
Aspectos nodejsAspectos nodejs
Aspectos nodejs
 
Jvmmx docker jvm
Jvmmx docker jvmJvmmx docker jvm
Jvmmx docker jvm
 
Aspnet40 Cache Extensibility
Aspnet40 Cache ExtensibilityAspnet40 Cache Extensibility
Aspnet40 Cache Extensibility
 
Web Performance para Magento
Web Performance para MagentoWeb Performance para Magento
Web Performance para Magento
 
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para Todos
 
Instalación de un servicio de proxy, Squid
Instalación de un servicio de proxy, SquidInstalación de un servicio de proxy, Squid
Instalación de un servicio de proxy, Squid
 
Jvmmx jigsaw
Jvmmx jigsawJvmmx jigsaw
Jvmmx jigsaw
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
 
Sandbox para ejercicios de programación
Sandbox para ejercicios de programaciónSandbox para ejercicios de programación
Sandbox para ejercicios de programación
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012
 
Cherokee
CherokeeCherokee
Cherokee
 
Informacion para aportar
Informacion para aportarInformacion para aportar
Informacion para aportar
 
Curso Squid avanzado
Curso Squid avanzadoCurso Squid avanzado
Curso Squid avanzado
 

Similar a Varnish http cache

Similar a Varnish http cache (20)

Webperf wordpress
Webperf wordpressWebperf wordpress
Webperf wordpress
 
Carlos Pascual #WPvalladolid 2014
Carlos Pascual #WPvalladolid 2014Carlos Pascual #WPvalladolid 2014
Carlos Pascual #WPvalladolid 2014
 
High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web Sites
 
Curso de php
Curso de phpCurso de php
Curso de php
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Servicios web
Servicios webServicios web
Servicios web
 
Nginx
NginxNginx
Nginx
 
1212
12121212
1212
 
Servicios web
Servicios webServicios web
Servicios web
 
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
 
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
 
Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)
 
Charla web performance optimization
Charla   web performance optimizationCharla   web performance optimization
Charla web performance optimization
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Ajax
AjaxAjax
Ajax
 
Glassfish
GlassfishGlassfish
Glassfish
 
Servicios web
Servicios webServicios web
Servicios web
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 

Más de Daniel González Cerviño

Más de Daniel González Cerviño (6)

Refactoring with php storm
Refactoring with php stormRefactoring with php storm
Refactoring with php storm
 
Presentación del grupo PHPMad en el codemotion madrid 2014
Presentación del grupo PHPMad en el codemotion madrid 2014Presentación del grupo PHPMad en el codemotion madrid 2014
Presentación del grupo PHPMad en el codemotion madrid 2014
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
Monolog - deSymfony unconference 2013
Monolog - deSymfony unconference 2013 Monolog - deSymfony unconference 2013
Monolog - deSymfony unconference 2013
 
Conquista la galaxia con GIT
Conquista la galaxia con GITConquista la galaxia con GIT
Conquista la galaxia con GIT
 
Introducción a TDD y PHPUnit
Introducción a TDD y PHPUnitIntroducción a TDD y PHPUnit
Introducción a TDD y PHPUnit
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (16)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

Varnish http cache