SlideShare una empresa de Scribd logo
1 de 37
HTTP 304
[ Not Modified ]
HTTP 304
HTTP 304
#QuienSoy
Ricardo Pereira
@Ricard0Per
www.ricardopereira.es
Arquitecto PHP Senior
Administrador de Sistemas
Do You Speak
PORTUÑOL?
HTTP / 1.0 - Mayo 1996
https://www.ietf.org/rfc/rfc1945.txt
HTTP / 1.1 - Junio 1999
https://www.ietf.org/rfc/rfc2616.txt
Mayo 2015
https://www.ietf.org/rfc/rfc7540.txt
HTTP 304
HTTP 304
Petición HTTP
Cliente
HTTP
Servidor
HTTP
GET /webpage HTTP/1.1
Host: beonprice.com
User-Agent: FastBrowser/2.1
Cache-Control: max-age=0
If-Modified-Since: Fri, 01 Jan 2016
If-None-Match: abcdef123456789
Accept: text/html
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 234
Cache-Control: max-age=5
Last-Modified: Sat, 02 Jan 2016
ETag: abc123456789
Vary: Accept-Encoding
GET /webpage HTTP/1.1
Host: beonprice.com
User-Agent: FastBrowser/2.1
Cache-Control: max-age=0
If-Modified-Since: Fri, 01 Jan 2016
If-None-Match: abcdef123456789
Accept: text/html
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 234
Cache-Control: max-age=5
Last-Modified: Sat, 02 Jan 2016
ETag: abc123456789
Vary: Accept-Encoding
HTTP 304
Peticiones HTTP
Una página web en 2015 tiene de
media unas 100 peticiones HTTP:
* 2Mb tamaño
* 56 imágenes
* 20 JavaScript
* 7 CSS
* 3 fuentes
REF.: http://www.sitepoint.com/2mb-web-pages-whos-blame/
Esta cantidad de peticiones implica
determinadas desventajas:
* Obtener un elemento es lento y caro
* Muchos recorridos de ida y vuelta
* Gran tamaño de las respuestas
* Costes de datos para el visitante
* Tiempos de respuestas elevados
CACHÉ
[ To The Rescue ]
HTTP 304
HTTP 304
Modelos de Caché
De caducidad
Expires
( HTTP/1.0 )
Cache-Control
( HTTP/1.1 )
De validación
If-None-Match
ETag
If-Modified-Since
Last-Modified
CADUCIDAD
[ Modelo de ]
HTTP 304
HTTP 304
Expires ( HTTP/1.0 )
Navegador
CachéNavegador
ServidorHTTP
GET /webpage HTTP/1.0
Host: beonprice.com
GET /webpage HTTP/1.0
Host: beonprice.com
HTTP/1.0 200 OK
Expires: Sat, 02 Jan 2016
HTTP/1.0 200 OK
Expires: Sat, 02 Jan 2016
GET /webpage HTTP/1.0
Host: beonprice.com
HTTP/1.0 304 OK
Expires: Sat, 02 Jan 2016
Fri, 01 Jan 2016
Fri, 01 Jan 2016
..:: NOTA ::..
No hay petición al servidor
HTTP 304
Cache-Control ( HTTP/1.1 )
Navegador
CachéNavegador
ServidorHTTP
GET /webpage HTTP/1.1
Host: beonprice.com
GET /webpage HTTP/1.1
Host: beonprice.com
HTTP/1.1 200 OK
Cache-Control: max-age=60
GET /webpage HTTP/1.1
Host: beonprice.com
12:00:00
12:00:30
..:: NOTA ::..
No hay petición al servidor
HTTP/1.1 200 OK
Cache-Control: max-age=60
HTTP/1.1 304 OK
Cache-Control: max-age=60
Age: 30
VALIDACIÓN
[ Modelo de ]
HTTP 304
HTTP 304
If-None-Match / ETag
Navegador
CachéNavegador
ServidorHTTP
GET /webpage HTTP/1.1
Host: beonprice.com
GET /webpage HTTP/1.1
Host: beonprice.com
HTTP/1.1 200 OK
ETag: abcd1234
HTTP/1.1 200 OK
ETag: abcd1234
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
HTTP/1.1 304 OK
ETag: abcd1234
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
HTTP/1.1 304 OK
ETag: abcd1234
HTTP 304
If-Modified-Since / Last-Modified
Navegador
CachéNavegador
ServidorHTTP
GET /webpage HTTP/1.1
Host: beonprice.com
GET /webpage HTTP/1.1
Host: beonprice.com
HTTP/1.1 200 OK
Last-Modified: Fri, 01 Jan 2016
HTTP/1.1 200 OK
Last-Modified: Fri, 01 Jan 2016
GET /webpage HTTP/1.1
Host: beonprice.com
If-Modified-Since: Fri, 01 Jan 2016
HTTP/1.1 304 OK
Last-Modified: Fri, 01 Jan 2016
GET /webpage HTTP/1.1
Host: beonprice.com
If-Modified-Since: Fri, 01 Jan 2016
HTTP/1.1 304 OK
Last-Modified: Fri, 01 Jan 2016
HTTP 304
Puntos Relevantes
De caducidad
Escalan mejor
Menos peticiones al servidor
Tiempos de respuesta más rápidos
Se recomienda en archivos estáticos
De validación
Ahorra tráfico de datos
Respuestas 304 sin contenido
Contenido siempre actualizado
Se recomienda en páginas dinámicos
Se puede combinar las cabeceras que se desee
Las de caducidad ganan sobre las de validación
El objetivo es no generar la misma respuesta dos veces
HTTP CACHÉ
TIPOS DE
HTTP 304
HTTP 304
Client Cache
Resource
Cache
beonprice.com
HTTP 304
Proxy Cache
Resource
Cache
Proxy Cache
beonprice.com
Corporate Domain or ISP
HTTP 304
Gateway Cache
Resource
Cache
Gateway Cache beonprice.com
Datacenter
GATEWAY CACHE
HTTP 304
HTTP 304
Sin Gateway Cache
Inconvenientes:
* Generar páginas dinámicas
es lento y costoso
* Tienen de servir contenido
estático de forma constante
* Congestionamientos de red
* Tiempos de respuesta altos
HTTP 304
Con Gateway Cache
Ventajas:
* Contenido estático se sirve muy
rápido y con pocos recursos
* Gateway sirve 99% del contenido
estático y servers solo contenido
dinámico
* Tiempos de respuesta bajos
* La misma carga, menos servers
Solo si gateway no tiene caché
HTTP 304
Cache-Control ( HTTP/1.1 )
Navegador
CachéNavegador
ServidorHTTP
GET /webpage HTTP/1.1
Host: beonprice.com
12:00:00 GET /webpage HTTP/1.1
Host: beonprice.com
GET /webpage HTTP/1.1
Host: beonprice.com
GatewayCache
HTTP/1.1 200 OK
Cache-Control: max-age=60
HTTP/1.1 200 OK
Cache-Control: max-age=60
HTTP/1.1 200 OK
Cache-Control: max-age=60
HTTP/1.1 304 OK
Cache-Control: max-age=60
Age: 30
..:: NOTA ::..
No hay petición al gateway
GET /webpage HTTP/1.1
Host: beonprice.com
12:00:30
..:: NOTA ::..
No hay petición al servidor
HTTP 304
If-None-Match / ETag
Navegador
CachéNavegador
ServidorHTTP
GET /webpage HTTP/1.1
Host: beonprice.com
GET /webpage HTTP/1.1
Host: beonprice.com
GET /webpage HTTP/1.1
Host: beonprice.com
GatewayCache
HTTP/1.1 200 OK
ETag: abcd1234
HTTP/1.1 200 OK
ETag: abcd1234
HTTP/1.1 200 OK
ETag: abcd1234
HTTP/1.1 304 OK
ETag: abcd1234
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
HTTP/1.1 304 OK
ETag: abcd1234
HTTP/1.1 304 OK
ETag: abcd1234
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
HTTP/1.1 200 OK
ETag: efgh5678
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
GET /webpage HTTP/1.1
Host: beonprice.com
If-None-Match: abcd1234
HTTP/1.1 200 OK
ETag: efgh5678
HTTP/1.1 200 OK
ETag: efgh5678
HTTP 304
[ No iba hablar de ]
HTTP 304
1001M10M100M
HTTP 304
Problemas y más Problemas
* Congestión de la red entre servers del
datacenter
* Página muy dinámica y de coste
elevado
* Sólo se puede almacenar páginas
web enteras en caché
* Tiempos de caché por página muy
pequeños para mantener frescura del
bloque central (10 segundos)
* No es posible renderizar bloques en
otros servers
ESI
[ To The Rescue ]
HTTP 304
Edge Side Includes 1.0 - Agosto 2001
https://www.w3.org/TR/esi-lang
HTTP 304
<html>
<body>
<div id="pagelet_composer">
<esi:include src="/composer" />
</div>
<div id="topnews_main_stream">
<esi:include src="/topnews" />
</div>
<div class="home_right_column">
<esi:include src="/rightCol" />
</div>
<div id="pagelet_rhc_footer">
<esi:include src="/footer" />
</div>
</body>
</html>
HTTP 304
Petición ESI (0s)
ClienteHTTP
GatewayCache
ServidorHTTP
ESIProcessor
facebook.com/webpage
200 - Cache-Control: max-age: 10
/webpage /webpage
200 - Cache-Control: max-age: 10200 - Cache-Control: max-age: 10
/composer
200 - Cache-Control: s-maxage: 2592000
/composer
200 - Cache-Control: s-maxage: 2592000
/topnews
200 - Cache-Control: s-maxage: 10
/topnews
200 - Cache-Control: s-maxage: 10
/rightCol
200 - Cache-Control: s-maxage: 60
/rightCol
200 - Cache-Control: s-maxage: 60
/footer
200 - Cache-Control: s-maxage: 2592000
/footer
200 - Cache-Control: s-maxage: 2592000
HTTP 304
Petición ESI (+5s)
ClienteHTTP
GatewayCache
ServidorHTTP
ESIProcessor
facebook.com/webpage
304 - Age: 5
..:: NOTA ::..
No hay petición al servidor
..:: NOTA ::..
Procesador ESI sin carga
HTTP 304
Petición ESI (+11s)
ClienteHTTP
GatewayCache
ServidorHTTP
ESIProcessor
facebook.com/webpage
200 - Cache-Control: max-age: 10
/webpage /webpage
200 - Cache-Control: max-age: 10200 - Cache-Control: max-age: 10
/composer
304 - Age: 10
/topnews
200 - Cache-Control: s-maxage: 10
/topnews
200 - Cache-Control: s-maxage: 10
/rightCol
304 - Age: 10
/footer
304 - Age: 10
HTTP 304
Petición ESI (+61s)
ClienteHTTP
GatewayCache
ServidorHTTP
ESIProcessor
facebook.com/webpage
200 - Cache-Control: max-age: 10
/webpage /webpage
200 - Cache-Control: max-age: 10200 - Cache-Control: max-age: 10
/composer
304 - Age: 60
/topnews
200 - Cache-Control: s-maxage: 10
/topnews
200 - Cache-Control: s-maxage: 10
/rightCol
200 - Cache-Control: s-maxage: 60
/rightCol
200 - Cache-Control: s-maxage: 60
/footer
304 - Age: 60
HTTP 304
100M
HTTP 304
Ahorro de Datos en el Footer
1.591.000.000 usuarios en 2015
12.6 páginas vistas por usuario
Footer actual ocupa 1.7KB
Código ESI ocupa 0.5KB
REF.:
http://www.alexa.com/siteinfo/facebook.com
http://expandedramblings.com/index.php/by-the-numbers-17-amazing-face
book-stats/
Tráfico dentro del datacenter:
Footer sin ESI: 34.1TB
Footer con ESI: 10TB
Ahorro: 24.1TB
NOTA: Ahorro por cada nivel de infraestructura
GRACIAS
[ Preguntas ]
HTTP 304

Más contenido relacionado

Similar a HTTP 304 - Not Modified

ROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureJavier Lafora Rey
 
High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web SitesopenfinanceDev
 
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011Desarrollos NEA
 
Gestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperGestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperErnesto Crespo
 
UDA-Anexo emulación xhr-iframes
UDA-Anexo emulación xhr-iframesUDA-Anexo emulación xhr-iframes
UDA-Anexo emulación xhr-iframesAnder Martinez
 
Presentación Congreso Internet del Mediterráneo
Presentación Congreso Internet del MediterráneoPresentación Congreso Internet del Mediterráneo
Presentación Congreso Internet del MediterráneoFernando Serer
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació WebCarlesMG57
 

Similar a HTTP 304 - Not Modified (20)

(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
 
Seguridad en web
Seguridad en webSeguridad en web
Seguridad en web
 
Protocolo http
Protocolo httpProtocolo http
Protocolo http
 
2.12 http
2.12 http2.12 http
2.12 http
 
Protocolos de internet
Protocolos de internetProtocolos de internet
Protocolos de internet
 
ROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureROA - Resource Oriented Architecture
ROA - Resource Oriented Architecture
 
Curso de php
Curso de phpCurso de php
Curso de php
 
Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
1 fundamentos web
1 fundamentos web1 fundamentos web
1 fundamentos web
 
As400web server
As400web serverAs400web server
As400web server
 
High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web Sites
 
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
 
Gestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperGestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeper
 
UDA-Anexo emulación xhr-iframes
UDA-Anexo emulación xhr-iframesUDA-Anexo emulación xhr-iframes
UDA-Anexo emulación xhr-iframes
 
Presentación Congreso Internet del Mediterráneo
Presentación Congreso Internet del MediterráneoPresentación Congreso Internet del Mediterráneo
Presentación Congreso Internet del Mediterráneo
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
 
Http
HttpHttp
Http
 
22 http ftp_linux_asoitson
22 http ftp_linux_asoitson22 http ftp_linux_asoitson
22 http ftp_linux_asoitson
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació Web
 

Último

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 

Último (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

HTTP 304 - Not Modified

  • 1. HTTP 304 [ Not Modified ]
  • 5. HTTP / 1.0 - Mayo 1996 https://www.ietf.org/rfc/rfc1945.txt HTTP / 1.1 - Junio 1999 https://www.ietf.org/rfc/rfc2616.txt Mayo 2015 https://www.ietf.org/rfc/rfc7540.txt HTTP 304
  • 6. HTTP 304 Petición HTTP Cliente HTTP Servidor HTTP GET /webpage HTTP/1.1 Host: beonprice.com User-Agent: FastBrowser/2.1 Cache-Control: max-age=0 If-Modified-Since: Fri, 01 Jan 2016 If-None-Match: abcdef123456789 Accept: text/html HTTP/1.1 200 OK Content-Type: text/html Content-Length: 234 Cache-Control: max-age=5 Last-Modified: Sat, 02 Jan 2016 ETag: abc123456789 Vary: Accept-Encoding GET /webpage HTTP/1.1 Host: beonprice.com User-Agent: FastBrowser/2.1 Cache-Control: max-age=0 If-Modified-Since: Fri, 01 Jan 2016 If-None-Match: abcdef123456789 Accept: text/html HTTP/1.1 200 OK Content-Type: text/html Content-Length: 234 Cache-Control: max-age=5 Last-Modified: Sat, 02 Jan 2016 ETag: abc123456789 Vary: Accept-Encoding
  • 7. HTTP 304 Peticiones HTTP Una página web en 2015 tiene de media unas 100 peticiones HTTP: * 2Mb tamaño * 56 imágenes * 20 JavaScript * 7 CSS * 3 fuentes REF.: http://www.sitepoint.com/2mb-web-pages-whos-blame/ Esta cantidad de peticiones implica determinadas desventajas: * Obtener un elemento es lento y caro * Muchos recorridos de ida y vuelta * Gran tamaño de las respuestas * Costes de datos para el visitante * Tiempos de respuestas elevados
  • 8. CACHÉ [ To The Rescue ] HTTP 304
  • 9. HTTP 304 Modelos de Caché De caducidad Expires ( HTTP/1.0 ) Cache-Control ( HTTP/1.1 ) De validación If-None-Match ETag If-Modified-Since Last-Modified
  • 10. CADUCIDAD [ Modelo de ] HTTP 304
  • 11. HTTP 304 Expires ( HTTP/1.0 ) Navegador CachéNavegador ServidorHTTP GET /webpage HTTP/1.0 Host: beonprice.com GET /webpage HTTP/1.0 Host: beonprice.com HTTP/1.0 200 OK Expires: Sat, 02 Jan 2016 HTTP/1.0 200 OK Expires: Sat, 02 Jan 2016 GET /webpage HTTP/1.0 Host: beonprice.com HTTP/1.0 304 OK Expires: Sat, 02 Jan 2016 Fri, 01 Jan 2016 Fri, 01 Jan 2016 ..:: NOTA ::.. No hay petición al servidor
  • 12. HTTP 304 Cache-Control ( HTTP/1.1 ) Navegador CachéNavegador ServidorHTTP GET /webpage HTTP/1.1 Host: beonprice.com GET /webpage HTTP/1.1 Host: beonprice.com HTTP/1.1 200 OK Cache-Control: max-age=60 GET /webpage HTTP/1.1 Host: beonprice.com 12:00:00 12:00:30 ..:: NOTA ::.. No hay petición al servidor HTTP/1.1 200 OK Cache-Control: max-age=60 HTTP/1.1 304 OK Cache-Control: max-age=60 Age: 30
  • 14. HTTP 304 If-None-Match / ETag Navegador CachéNavegador ServidorHTTP GET /webpage HTTP/1.1 Host: beonprice.com GET /webpage HTTP/1.1 Host: beonprice.com HTTP/1.1 200 OK ETag: abcd1234 HTTP/1.1 200 OK ETag: abcd1234 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 HTTP/1.1 304 OK ETag: abcd1234 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 HTTP/1.1 304 OK ETag: abcd1234
  • 15. HTTP 304 If-Modified-Since / Last-Modified Navegador CachéNavegador ServidorHTTP GET /webpage HTTP/1.1 Host: beonprice.com GET /webpage HTTP/1.1 Host: beonprice.com HTTP/1.1 200 OK Last-Modified: Fri, 01 Jan 2016 HTTP/1.1 200 OK Last-Modified: Fri, 01 Jan 2016 GET /webpage HTTP/1.1 Host: beonprice.com If-Modified-Since: Fri, 01 Jan 2016 HTTP/1.1 304 OK Last-Modified: Fri, 01 Jan 2016 GET /webpage HTTP/1.1 Host: beonprice.com If-Modified-Since: Fri, 01 Jan 2016 HTTP/1.1 304 OK Last-Modified: Fri, 01 Jan 2016
  • 16. HTTP 304 Puntos Relevantes De caducidad Escalan mejor Menos peticiones al servidor Tiempos de respuesta más rápidos Se recomienda en archivos estáticos De validación Ahorra tráfico de datos Respuestas 304 sin contenido Contenido siempre actualizado Se recomienda en páginas dinámicos Se puede combinar las cabeceras que se desee Las de caducidad ganan sobre las de validación El objetivo es no generar la misma respuesta dos veces
  • 19. HTTP 304 Proxy Cache Resource Cache Proxy Cache beonprice.com Corporate Domain or ISP
  • 20. HTTP 304 Gateway Cache Resource Cache Gateway Cache beonprice.com Datacenter
  • 22. HTTP 304 Sin Gateway Cache Inconvenientes: * Generar páginas dinámicas es lento y costoso * Tienen de servir contenido estático de forma constante * Congestionamientos de red * Tiempos de respuesta altos
  • 23. HTTP 304 Con Gateway Cache Ventajas: * Contenido estático se sirve muy rápido y con pocos recursos * Gateway sirve 99% del contenido estático y servers solo contenido dinámico * Tiempos de respuesta bajos * La misma carga, menos servers
  • 24. Solo si gateway no tiene caché HTTP 304 Cache-Control ( HTTP/1.1 ) Navegador CachéNavegador ServidorHTTP GET /webpage HTTP/1.1 Host: beonprice.com 12:00:00 GET /webpage HTTP/1.1 Host: beonprice.com GET /webpage HTTP/1.1 Host: beonprice.com GatewayCache HTTP/1.1 200 OK Cache-Control: max-age=60 HTTP/1.1 200 OK Cache-Control: max-age=60 HTTP/1.1 200 OK Cache-Control: max-age=60 HTTP/1.1 304 OK Cache-Control: max-age=60 Age: 30 ..:: NOTA ::.. No hay petición al gateway GET /webpage HTTP/1.1 Host: beonprice.com 12:00:30 ..:: NOTA ::.. No hay petición al servidor
  • 25. HTTP 304 If-None-Match / ETag Navegador CachéNavegador ServidorHTTP GET /webpage HTTP/1.1 Host: beonprice.com GET /webpage HTTP/1.1 Host: beonprice.com GET /webpage HTTP/1.1 Host: beonprice.com GatewayCache HTTP/1.1 200 OK ETag: abcd1234 HTTP/1.1 200 OK ETag: abcd1234 HTTP/1.1 200 OK ETag: abcd1234 HTTP/1.1 304 OK ETag: abcd1234 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 HTTP/1.1 304 OK ETag: abcd1234 HTTP/1.1 304 OK ETag: abcd1234 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 HTTP/1.1 200 OK ETag: efgh5678 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 GET /webpage HTTP/1.1 Host: beonprice.com If-None-Match: abcd1234 HTTP/1.1 200 OK ETag: efgh5678 HTTP/1.1 200 OK ETag: efgh5678
  • 26. HTTP 304 [ No iba hablar de ]
  • 28. HTTP 304 Problemas y más Problemas * Congestión de la red entre servers del datacenter * Página muy dinámica y de coste elevado * Sólo se puede almacenar páginas web enteras en caché * Tiempos de caché por página muy pequeños para mantener frescura del bloque central (10 segundos) * No es posible renderizar bloques en otros servers
  • 29. ESI [ To The Rescue ] HTTP 304
  • 30. Edge Side Includes 1.0 - Agosto 2001 https://www.w3.org/TR/esi-lang HTTP 304 <html> <body> <div id="pagelet_composer"> <esi:include src="/composer" /> </div> <div id="topnews_main_stream"> <esi:include src="/topnews" /> </div> <div class="home_right_column"> <esi:include src="/rightCol" /> </div> <div id="pagelet_rhc_footer"> <esi:include src="/footer" /> </div> </body> </html>
  • 31. HTTP 304 Petición ESI (0s) ClienteHTTP GatewayCache ServidorHTTP ESIProcessor facebook.com/webpage 200 - Cache-Control: max-age: 10 /webpage /webpage 200 - Cache-Control: max-age: 10200 - Cache-Control: max-age: 10 /composer 200 - Cache-Control: s-maxage: 2592000 /composer 200 - Cache-Control: s-maxage: 2592000 /topnews 200 - Cache-Control: s-maxage: 10 /topnews 200 - Cache-Control: s-maxage: 10 /rightCol 200 - Cache-Control: s-maxage: 60 /rightCol 200 - Cache-Control: s-maxage: 60 /footer 200 - Cache-Control: s-maxage: 2592000 /footer 200 - Cache-Control: s-maxage: 2592000
  • 32. HTTP 304 Petición ESI (+5s) ClienteHTTP GatewayCache ServidorHTTP ESIProcessor facebook.com/webpage 304 - Age: 5 ..:: NOTA ::.. No hay petición al servidor ..:: NOTA ::.. Procesador ESI sin carga
  • 33. HTTP 304 Petición ESI (+11s) ClienteHTTP GatewayCache ServidorHTTP ESIProcessor facebook.com/webpage 200 - Cache-Control: max-age: 10 /webpage /webpage 200 - Cache-Control: max-age: 10200 - Cache-Control: max-age: 10 /composer 304 - Age: 10 /topnews 200 - Cache-Control: s-maxage: 10 /topnews 200 - Cache-Control: s-maxage: 10 /rightCol 304 - Age: 10 /footer 304 - Age: 10
  • 34. HTTP 304 Petición ESI (+61s) ClienteHTTP GatewayCache ServidorHTTP ESIProcessor facebook.com/webpage 200 - Cache-Control: max-age: 10 /webpage /webpage 200 - Cache-Control: max-age: 10200 - Cache-Control: max-age: 10 /composer 304 - Age: 60 /topnews 200 - Cache-Control: s-maxage: 10 /topnews 200 - Cache-Control: s-maxage: 10 /rightCol 200 - Cache-Control: s-maxage: 60 /rightCol 200 - Cache-Control: s-maxage: 60 /footer 304 - Age: 60
  • 36. HTTP 304 Ahorro de Datos en el Footer 1.591.000.000 usuarios en 2015 12.6 páginas vistas por usuario Footer actual ocupa 1.7KB Código ESI ocupa 0.5KB REF.: http://www.alexa.com/siteinfo/facebook.com http://expandedramblings.com/index.php/by-the-numbers-17-amazing-face book-stats/ Tráfico dentro del datacenter: Footer sin ESI: 34.1TB Footer con ESI: 10TB Ahorro: 24.1TB NOTA: Ahorro por cada nivel de infraestructura