varnish: quando la cache conta2017 ideazione varnish cache 1.0 inizio dei lavori varnish cache 3.0...

94
Varnish: quando la cache conta Linux Day 2017 - Torino Elia Bellussi Email: [email protected] Mobile: +39 333 689 2117

Upload: others

Post on 10-Sep-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Linux Day 2017 - Torino

Elia BellussiEmail: [email protected]

Mobile: +39 333 689 2117

Page 2: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Indice

• Un po’ di storia• Che cosa è• Varnish è flessibile• Introduzione ad HTTP• Installazione• Utility• Varnish Configuration Language – VCL• La vita degli oggetti

2/94

Page 3: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

2017

IdeazioneVarnish Cache 1.0

Inizio deilavori

VarnishCache 3.0

Varnishtest

2005 2006 2006 2008

VarnishCache 2.0

20112008 2014 2016

VarnishCache 5.0

VarnishCache 4.0

Varnish: quando la cache conta

Un po’ di storia

3/94

Page 4: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Che cos’è

Varnish Cache è un reverse HTTP proxy, altrimenti detto reverse proxy o HTTP accelerator.

Internet

Proxy Web server

www.sito-esempio.it

Rete aziendale

4/94

Page 5: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Che cos’è

Si può usare anche con altri compiti.

Meccanismo di autenticazione e autorizzazione

Firewall Bilanciatore

Gateway per single sign on

Router HTTP

Soluzione per backendinstabili

Punto di integrazione

5/94

Page 6: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Che cos’è

Varnish Cache è un progetto open source sviluppato per GNU/Linux e FreeBSD.

6/94

Page 7: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Che cos’è

L’architettura hardware su cui può girare è esclusivamente a 64 bit.

7/94

Page 8: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Che cos’è

Le funzionalità sono espandibili grazie a moduli aggiuntivi.

8/94

Page 9: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Che cos’è

La configurazione avviene tramite un linguaggio apposito, il Varnish Configuration Language

vcl 4.0

backend default {

.host = "127.0.0.1";

.port = "8080";

}

sub vcl_recv {

# Trasformazione dell'header della request

if (req.url ~ "˄/admin") {

return (pass)

}

}

9/94

Page 10: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish è flessibile

È facilmente configurabile e permette di creare regole di caching personalizzate tramite il VCL.

10/94

Page 11: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish è flessibile

VCL è un linguaggio di dominio specifico che si appoggia sul linguaggio C. Di conseguenza esso viene tradotto in C e compilato.

11/94

Page 12: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

Varnish Cache viene usato con la semantica HTTP/1.1 ma è compatibile anche con la 1.0.

12/94

Page 13: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

HTTP è un protocollo applicativo di rete per sistemi distribuiti ed è alle fondamenta della comunicazione web.

13/94

Page 14: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

HTTP 1.0 e 1.1 permettono di spedire richieste multiple tramite una singola connessione. Se un client volesse elaborare più risposte in parallelo si dovrebbero aprire più connessioni.

14/94

Page 15: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

Ogni risorsa è identificata da un Uniform Resource Identifier (URI) e può essere qualsiasi cosa e può avere differenti rappresentazioni.

15/94

Page 16: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

Una rappresentazione è una istanza della risorsa. Un server, nel backend, produce questa risorsa.

GET /index.html HTTP/1.1 […]

HTTP/1.1 200 OK […]

16/94

Page 17: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

GET / HTTP/2.1

Host: localhost

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) \ Gecko/20171028 Firefox/56.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: it,it-it;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Cache-Control: max-age=1

Varnish: quando la cache conta

Introduzione ad HTTP

La prima riga di una HTTP request si chiama request line ed inizia con il metodo, seguito dalla risorsa richiesta e, per finire, dalla tipologia di protocollo.

17/94

Page 18: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

GET / HTTP/2.1

Host: localhost

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) \ Gecko/20171028 Firefox/56.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: it,it-it;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Cache-Control: max-age=1

Varnish: quando la cache conta

Introduzione ad HTTP

Il request method comunica al web server quale tipologia di richiesta si va ad effettuare: ad esempio GET per richiedere dati al backend, POST per aggiornarli nel backend.

18/94

Page 19: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

GET / HTTP/2.1

Host: localhost

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) \ Gecko/20171028 Firefox/56.0.1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: it,it-it;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Cache-Control: max-age=1

Varnish: quando la cache conta

Introduzione ad HTTP

Il request message, che segue la request line, può contenere un numero arbitrario di campi.

19/94

Page 20: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

HTTP/1.1 200 OK

Server: Apache/2.2.14 (Ubuntu)

X-Powered-By: PHP/5.3.2-1ubuntu4.7

Cache-Control: public, max-age-86400

Last-Modified: Mon, 23 Oct 2017 08:13:41+0000

Expires: Tue, 24 Feb 1981 07:55:00 GMT

Vary: Cookie,Accept-Encoding

ETag: "1346518729"

Content-Type: text/html; charset=utf-8

Content-Length: 23562

Date: Mon, 23 Oct 2017 09:01:36 GMT

X-Varnish: 1508746421 1508749296

Age: 17324

Via: 1.1 varnish

Connection: keep-alive

Varnish: quando la cache conta

Introduzione ad HTTP

La prima riga di una HTTP response si chiama status line e consiste in una stringa con la versione del protocollo, seguita da uno stato numerico con associato il significato testuale.

20/94

Page 21: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

HTTP/1.1 200 OK

Server: Apache/2.2.14 (Ubuntu)

X-Powered-By: PHP/5.3.2-1ubuntu4.7

Cache-Control: public, max-age-86400

Last-Modified: Mon, 23 Oct 2017 08:13:41+0000

Expires: Tue, 24 Feb 1981 07:55:00 GMT

Vary: Cookie,Accept-Encoding

ETag: "1346518729"

Content-Type: text/html; charset=utf-8

Content-Length: 23562

Date: Mon, 23 Oct 2017 09:01:36 GMT

X-Varnish: 1508746421 1508749296

Age: 17324

Via: 1.1 varnish

Connection: keep-alive

Varnish: quando la cache conta

Introduzione ad HTTP

La risposta, che segue la status line, può contenere un numero arbitrario di campi.

21/94

Page 22: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

I metodi possono essere di tre tipologie. Safe, in sola lettura, quindi non viene alterato alcun dato.

GET OPTIONS HEAD

22/94

Page 23: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

Con i metodi idempotenti chiamate multiple hanno gli stessi effetti di una unica chiamata.

GET OPTIONS HEAD

PUT DELETE

23/94

Page 24: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Introduzione ad HTTP

I metodi cacheable permettono di salvare le risposte per usi futuri.

GET POST HEAD

24/94

Page 25: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Una volta installato Varnish Cache ci aspettiamo un certo comportamento.

Varnish Web serverClient Request Miss

Response Response

25/94

Page 26: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Una volta installato Varnish Cache ci aspettiamo un certo comportamento.

Varnish Web serverClient Request

Hit, Response

26/94

Page 27: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Per installare da tramite Bash, lanceremo da shell il primo comando se vogliamo usare un rpm, altrimenti il secondo se vogliamo usare un deb.

curl -s https://packagecloud.io/install/repositories/varnishcache/varnish5/script.rpm.sh | sudo bash

curl -s https://packagecloud.io/install/repositories/varnishcache/varnish5/script.deb.sh | sudo bash

27/94

Page 28: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Per installare manualmente, invece, sfruttando gli rpm, eseguiremo il seguente comando per gestire le signature gpg:

sudo yum install pygpgme yum-utils

28/94

Page 29: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Successivamente creeremo un file di configurazione del repository rpm:

/etc/yum.repos.d/varnishcache_varnish5.repo

29/94

Page 30: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Il cui contenuto sarà, in base alla propria distribuzione, sarà:

[varnishcache_varnish5]

name=varnishcache_varnish5

baseurl=https://packagecloud.io/varnishcache/varnish5/el/6/$basearch

repo_gpgcheck=1

gpgcheck=0

enabled=1

gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

30/94

Page 31: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Il cui contenuto sarà, in base alla propria distribuzione, sarà:

[varnishcache_varnish5-source]

name=varnishcache_varnish5-source

baseurl=https://packagecloud.io/varnishcache/varnish5/el/6/SRPMS

repo_gpgcheck=1

gpgcheck=0

enabled=1

gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

31/94

Page 32: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Dopo di che aggiorneremo la configurazione:

sudo yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish5'

32/94

Page 33: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

E lanceremo l’installazione:

sudo yum install varnish -y

33/94

Page 34: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Per installare manualmente, invece, sfruttando i deb, eseguiremo il seguente comando per gestire le signature gpg:

curl -L https://packagecloud.io/varnishcache/varnish5/gpgkey | sudo apt-key add -

34/94

Page 35: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Aggiorneremo la nostra cache dei pacchetti:

sudo apt-get update

35/94

Page 36: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Se ci si trova su una distribuzione Debian si proceda con il seguente comando, altrimenti si può saltare:

sudo apt-get install debian-archive-keyring

36/94

Page 37: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Si procede con l’installazione del pacchetto che permette il fetch dei pacchetti tramite https:

sudo apt-get install -y apt-transport-https

37/94

Page 38: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Successivamente creeremo un file di configurazione del repository deb:

/etc/apt/sources.list.d/varnishcache_varnish5.list

38/94

Page 39: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Il cui contenuto, in base alla propria distribuzione – qui abbiamo usato trusty –, sarà:

deb https://packagecloud.io/varnishcache/varnish5/ubuntu/ trusty main

deb-src https://packagecloud.io/varnishcache/varnish5/ubuntu/ trusty main

39/94

Page 40: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Dopo di che aggiorneremo la configurazione:

sudo apt-get update

40/94

Page 41: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

E lanceremo l’installazione:

sudo apt-get install varnish -y

41/94

Page 42: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Su macchine rpm configuriamo il funzionamento congiunto di backend – su porta 8080 – e Varnish – su porta 80 – modificando il primo file per EL6 oppure il secondo per EL7 :

/etc/sysconfig/varnish

/etc/varnish/varnish.params

42/94

Page 43: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Cambieremo la seguente linea nella successiva:

VARNISH_LISTEN_PORT=6081

VARNISH_LISTEN_PORT=80

43/94

Page 44: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Ora bisognerà cambiare il file:

/etc/varnish/default.vcl

44/94

Page 45: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

In modo che Varnish punti al backend:

vcl 4.0

backend default {

.host = "127.0.0.1";

.port = "8080";

}

45/94

Page 46: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Allo stesso tempo modifichiamo il seguente file del backend:

/etc/apache2/conf/httpd.conf

46/94

Page 47: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

In modo che risulti così:

NameVirtualHost 127.0.0.1:8080

Listen 127.0.0.1:8080

47/94

Page 48: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Ed eseguiremo il restart dei servizi:

sudo service httpd restart

sudo service varnish restart

48/94

Page 49: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Su macchine deb configuriamo il funzionamento congiunto di backend – su porta 8080 – e Varnish – su porta 80 – modificando il primo file per EL6 oppure il secondo per EL7 :

/etc/default/varnish

49/94

Page 50: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Cambieremo la seguente linea nella successiva:

VARNISH_LISTEN_PORT=6081

VARNISH_LISTEN_PORT=80

50/94

Page 51: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Ora bisognerà cambiare il file:

/etc/varnish/default.vcl

51/94

Page 52: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

In modo che Varnish punti al backend:

vcl 4.0

backend default {

.host = "127.0.0.1";

.port = "8080";

}

52/94

Page 53: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Allo stesso tempo modifichiamo il seguente file del backend:

/etc/apache2/ports.conf

53/94

Page 54: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

In modo che risulti così:

NameVirtualHost 127.0.0.1:8080

Listen 127.0.0.1:8080

54/94

Page 55: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

E modifichiamo anche il seguente file del backend:

/etc/apache2/sites-available/default

55/94

Page 56: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

In modo che risulti così:

<VirtualHost 127.0.0.1:8080>

56/94

Page 57: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Ed eseguiremo il restart dei servizi:

sudo service apache2 restart

sudo service varnish restart

57/94

Page 58: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Installazione

Riassumiamo quali file modificare e come:

Cosa EL6 EL7 Ubuntu

Varnish Ascoltare sulla porta 80 /etc/sysconfig/varnish /etc/varnish/varnish.params /etc/default/varnish

Varnish Puntare al backend sulla porta 8080 /etc/varnish/default.vcl /etc/varnish/default.vcl /etc/varnish/default.vcl

Apache Ascoltare sulla porta 8080 /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf/etc/apache2/ports.conf/etc/apache2/sites-enabled/000-default*

58/94

Page 59: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Utility

L’installazione di Varnish Cache svariate utility.

varnishd varnishtest varnishadm

varnishlog varnishstat

59/94

Page 60: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Utility

È il demone che accetta le richieste HTTP provenienti dai client, le inoltra al backend, salva in cache gli oggetti che vengono ritornati e gira le risposte ai client.

varnishd

60/94

Page 61: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Utility

È un programma basato su script che viene usato per testare l’installazione permettendo di creare mock-up dei client, ottenere dati da mock-up o da backend e interagire con la configurazione.

varnishtest

61/94

Page 62: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Utility

Gestisce l’istanza corrente tramite una connessione via command line – CLI – che permette di far partire e fermare il demone, cambiare configurazione, ricaricarla e controllare la documentazione

varnishadm

62/94

Page 63: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Utility

Gestisce il formato dei log dando la possibilità di aggiungere o rimuovere parti degli stessi.

varnishlog

63/94

Page 64: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Utility

Serve ad accedere ai contatori e fornisce una statistica generale.

varnishstat

64/94

Page 65: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

Request Restartvcl_recv

vcl_hash

lookup

65/94

Page 66: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_hash

vcl_missvcl_hit vcl_pass

hitmiss

vcl_purge vcl_pipe

hit for pass passpurge

pipe

66/94

Page 67: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_hit

vcl_deliver

67/94

Page 68: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_miss

vcl_backend_fetch

68/94

Page 69: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_pass

vcl_backend_fetch

69/94

Page 70: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_purge

vcl_synth

70/94

Page 71: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_pipe

done

71/94

Page 72: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_deliver

done

72/94

Page 73: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_backend_fetch

read beresp(headers)

73/94

Page 74: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

read beresp(headers)

vcl_backend_response vcl_backend_error

74/94

Page 75: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

cacheable?

vcl_backend_response

cache Do not cache

75/94

Page 76: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

cacheable?cache Do not cache

vcl_deliver

76/94

Page 77: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_deliver

done

77/94

Page 78: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Varnish processa le richieste secondo un determinato flusso come una macchina a stati finiti.

vcl_synth

done

78/94

Page 79: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Versione dello script. È obbligatorio segnalarlo dalla versione 4.0 di Varnish, all’inizio dello script stesso.

vcl 4.0

backend default {

.host = "127.0.0.1";

.port = "8080";

}

sub vcl_recv {

# Trasformazione dell'header della request

if (req.url ~ "˄/admin") {

return (pass)

}

}

79/94

Page 80: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Un commento può essere evidenziato dal carattere # o dai caratteri // all’inizio della riga. Se un commento dovesse occupare più righe, lo stesso sarebbe racchiuso tra /* e */

vcl 4.0

backend default {

.host = "127.0.0.1";

.port = "8080";

}

sub vcl_recv {

# Trasformazione dell'header della request

if (req.url ~ "˄/admin") {

return (pass)

}

}

80/94

Page 81: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Le subroutine sono dichiarate con la parola sub che ne precede il nome. Non accettano argomenti e non ritornano valori. Scambiano i dati tramite header HTTP.

vcl 4.0

backend default {

.host = "127.0.0.1";

.port = "8080";

}

sub vcl_recv {

# Trasformazione dell'header della request

if (req.url ~ "˄/admin") {

return (pass)

}

}

81/94

Page 82: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Le subroutine terminano la loro esecuzione quando si ha il costrutto return(azione) che comunica a Varnish quale azione deve quindi svolgere.

vcl 4.0

backend default {

.host = "127.0.0.1";

.port = "8080";

}

sub vcl_recv {

# Trasformazione dell'header della request

if (req.url ~ "˄/admin") {

return (pass)

}

}

82/94

Page 83: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Sono disponibili funzioni per il trattamento delle stringhe, per gestire i ban o per far ripartire il motore di stato.

regsub(str, regex, sub)

regsuball(str, regex, sub)

ban(boolean expression)

hash_data(input)

synthetic(str)

83/94

Page 84: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Sono disponibili anche parole chiave per il trattamento delle variabili.

new()

set()

unset()

84/94

Page 85: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Molte sub routine sono predefinite ma si può cambiare il comportamento di ognuna. Possono essere usate per aggiungere header, cambiare l’aspetto dei log, effettuare redirect e molto altro.

vcl_recv

vcl_hash

vcl_pass

vcl_backend_fetch

vcl_backend_response

vcl_backend_error

vlc_hit

vcl_miss

vcl_deliver

vcl_purge

vcl_pipe

vcl_synth

85/94

Page 86: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Vcl_recv è la prima sub routine ad essere eseguita. Gestisce solo i metodi HTTP riconosciuti, mette in cache le richieste GET e POST, evita richieste autorizzative o con header di cookie.

sub vcl_recv{

if (req.method != "GET" &&

req.method != "HEAD" &&

req.method != "PUT" &&

req.method != "POST" &&

req.method != "TRACE" &&

req.method != "OPTION" &&

req.method != "DELETE"){

return(pipe);

}

return(hash)

}

86/94

Page 87: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

Varnish Configuration Language - VCL

Vcl_backend_response è stata pensata per evitare casi con condizioni non desiderate, per esempio per evitare che venga messa in cache una risposta che ritorna un cookie.

sub vcl_backend_response{

if (beresp.ttl <= 0s ||

beresp.http.Set-Cookie {

set beresp.uncacheable = true;

}

if (beresp.status >= 400 &&

beresp.status <= 600) {

set beresp.ttl = 0s;

}

return(deliver)

}

87/94

Page 88: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

La vita degli oggetti

Un oggetto rimane in cache fino a quando non scadono il TTL più il grace period e il keep period.T_origin corrisponde al momento in cui un oggetto entra in cache.

t_origin TTL grace keep

Freshobject

Staleobject

Cached object

If-modified-since

88/94

Page 89: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

La vita degli oggetti

Un oggetto rimane in cache fino a quando non scadono il TTL più il grace period e il keep period.TTL corrisponde al periodo di vita di un oggetto.

t_origin TTL grace keep

Freshobject

Staleobject

Cached object

If-modified-since

89/94

Page 90: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

La vita degli oggetti

Un oggetto rimane in cache fino a quando non scadono il TTL più il grace period e il keep period.Il periodo successivo alla scadenza di un oggetto per cui lo stesso può ancora essere trasferito.

t_origin TTL grace keep

Freshobject

Staleobject

Cached object

If-modified-since

90/94

Page 91: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

La vita degli oggetti

Un oggetto rimane in cache fino a quando non scadono il TTL più il grace period e il keep period.Il periodo in cui oggetti scaduti rimangono in cache per particolari situazioni del backend.

t_origin TTL grace keep

Freshobject

Staleobject

Cached object

If-modified-since

91/94

Page 92: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

La vita degli oggetti

Un oggetto rimane in cache fino a quando non scadono il TTL più il grace period e il keep period.Oggetti a cui corrisponde un TTL sono considerati come nuovi.

t_origin TTL grace keep

Freshobject

Staleobject

Cached object

If-modified-since

92/94

Page 93: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

La vita degli oggetti

Un oggetto rimane in cache fino a quando non scadono il TTL più il grace period e il keep period.Oggetti che hanno terminato il TTL ma che non sono ancora oltre il grace period sono scaduti.

t_origin TTL grace keep

Freshobject

Staleobject

Cached object

If-modified-since

93/94

Page 94: Varnish: quando la cache conta2017 Ideazione Varnish Cache 1.0 Inizio dei lavori Varnish Cache 3.0 Varnishtest 2005 2006 2006 2008 Varnish Cache 2.0 2008 2011 2014 2016 Varnish Cache

Varnish: quando la cache conta

La vita degli oggetti

Un oggetto rimane in cache fino a quando non scadono il TTL più il grace period e il keep period.Oggetti tra l’origine e keep sono usati con la condizione if-modified-since nell’header HTTP.

t_origin TTL grace keep

Freshobject

Staleobject

Cached object

If-modified-since

94/94