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
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
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
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
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
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