3. cacheable for 10 seconds
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
In
vel
nulla
arcu,
vitae
cursus
nunc.
Integer
semper
turpis
et
enim
por6tor
iaculis.
Nulla
facilisi.
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
Mauris
vehicula
ves;bulum
dictum.
Aenean
non
velit
tortor.
Nullam
adipiscing
malesuada
aliquam.
Mauris
dignissim,
urna
quis
iaculis
tempus,
justo
libero
por6tor
est,
nec
eleifend
est
elit
vitae
ante.
Curabitur
interdum
luctus
metus,
in
pulvinar
lectus
rutrum
sit
amet.
Duis
gravida,
metus
in
dictum
eleifend,
dolor
risus
;ncidunt
ligula,
non
volutpat
nulla
sapien
in
elit.
Nulla
rutrum
erat
id
neque
suscipit
eu
ultricies
odio
sollicitudin.
Aliquam
a
mi
vel
eros
placerat
hendrerit.
Phasellus
por6tor,
augue
sit
amet
vulputate
venena;s,
dui
leo
commodo
odio,
a
euismod
turpis
ligula
in
elit.
Sed
cursus
tortor
quis
dolor
aliquet
accumsan.
Curabitur
convallis
egestas
erat,
et
pharetra
neque
faucibus
vitae.
Integer
at
urna
leo.
Suspendisse
poten;.
Nulla
hendrerit
nisl
sit
amet
lorem
semper
comes from DB
nec
porta
mauris
volutpat.
Curabitur
a
velit
erat,
a
viverra
sem.
Duis
a
eros
nec
diam
faucibus
vehicula
a
sed
orci.
Vivamus
vehicula
dapibus
tellus
in
(simulated)
luctus.
Curabitur
luctus,
lorem
ac
pre;um
pharetra,
nisl
risus
condimentum
mi,
sit
amet
placerat
orci
ante
et
velit.
Vivamus
dapibus
nulla
tempor
metus
tris;que
vel
gravida
purus
pre;um.
Curabitur
suscipit
bibendum
massa,
at
imperdiet
purus
interdum
sit
amet.
Donec
;ncidunt
porta
dictum.
18. cacheable for 10 seconds
cacheable for 5 seconds
Lorem
ipsum
dolor
sit
amet,
consectetur
Lorem
ipsum
dolor
sit
adipiscing
elit.
In
vel
nulla
arcu,
vitae
amet,
consectetur
cursus
nunc.
Integer
semper
turpis
et
enim
adipiscing
elit.
In
vel
nulla
por6tor
iaculis.
Nulla
facilisi.
Lorem
ipsum
arcu,
vitae
cursus
nunc.
dolor
sit
amet,
consectetur
adipiscing
elit.
Integer
semper
turpis
et
Mauris
vehicula
ves;bulum
dictum.
enim
por6tor
iaculis.
Aenean
non
velit
tortor.
Nullam
adipiscing
Nulla
facilisi.
Lorem
ipsum
malesuada
aliquam.
Mauris
dignissim,
urna
dolor
sit
amet,
quis
iaculis
tempus,
justo
libero
por6tor
consectetur
adipiscing
elit.
est,
nec
eleifend
est
elit
vitae
ante.
Mauris
vehicula
Curabitur
interdum
luctus
metus,
in
ves;bulum
dictum.
pulvinar
lectus
rutrum
sit
amet.
Duis
Aenean
non
velit
tortor.
gravida,
metus
in
dictum
eleifend,
dolor
Nullam
adipiscing
risus
;ncidunt
ligula,
non
volutpat
nulla
comes from DB malesuada
aliquam.
comes from DB
sapien
in
elit.
Nulla
rutrum
erat
id
neque
Mauris
dignissim,
urna
(simulated)
suscipit
eu
ultricies
odio
sollicitudin.
(simulated)
quis
iaculis
tempus,
justo
Aliquam
a
mi
vel
eros
placerat
hendrerit.
libero
por6tor
est,
nec
Phasellus
por6tor,
augue
sit
amet
eleifend
est
elit
vitae
ante.
vulputate
venena;s,
dui
leo
commodo
Curabitur
interdum
luctus
odio,
a
euismod
turpis
ligula
in
elit.
metus.
19. requests / second
600
500
400
300
symfony
Symfony2
200
100
0
10
30
50
70
90
number of concurrent requests
22. cacheable for 10 seconds cacheable for 5 seconds
Lorem
ipsum
dolor
sit
amet,
consectetur
Lorem
ipsum
dolor
sit
layout adipiscing
elit.
In
vel
nulla
arcu,
vitae
amet,
consectetur
cursus
nunc.
Integer
semper
turpis
et
enim
adipiscing
elit.
In
vel
nulla
por6tor
iaculis.
Nulla
facilisi.
Lorem
ipsum
arcu,
vitae
cursus
nunc.
dolor
sit
amet,
consectetur
adipiscing
elit.
Integer
semper
turpis
et
Mauris
vehicula
ves;bulum
dictum.
enim
por6tor
iaculis.
Aenean
non
velit
tortor.
Nullam
adipiscing
Nulla
facilisi.
Lorem
ipsum
malesuada
aliquam.
Mauris
dignissim,
urna
dolor
sit
amet,
quis
iaculis
tempus,
justo
libero
por6tor
consectetur
adipiscing
elit.
est,
nec
eleifend
est
elit
vitae
ante.
Mauris
vehicula
Curabitur
interdum
luctus
metus,
in
ves;bulum
dictum.
pulvinar
lectus
rutrum
sit
amet.
Duis
Aenean
non
velit
tortor.
gravida,
metus
in
dictum
eleifend,
dolor
Nullam
adipiscing
risus
;ncidunt
ligula,
non
volutpat
nulla
malesuada
aliquam.
sapien
main Nulla
rutrum
erat
id
neque
in
elit.
Mauris
dignissim,
in
component urna
suscipit
eu
ultricies
odio
sollicitudin.
action quis
iaculis
tempus,
justo
the layout
Aliquam
a
mi
vel
eros
placerat
hendrerit.
libero
por6tor
est,
nec
Phasellus
por6tor,
augue
sit
amet
eleifend
est
elit
vitae
ante.
vulputate
venena;s,
dui
leo
commodo
Curabitur
interdum
luctus
odio,
a
euismod
turpis
ligula
in
elit.
metus.
NOT cacheable
26. Lorem
ipsum
dolor
sit
amet,
consectetur
Lorem
ipsum
dolor
sit
adipiscing
elit.
In
vel
nulla
arcu,
vitae
amet,
consectetur
cursus
nunc.
Integer
semper
turpis
et
enim
adipiscing
elit.
In
vel
nulla
por6tor
iaculis.
Nulla
facilisi.
Lorem
ipsum
arcu,
vitae
cursus
nunc.
dolor
sit
amet,
consectetur
adipiscing
elit.
Integer
semper
turpis
et
Mauris
vehicula
ves;bulum
dictum.
enim
por6tor
iaculis.
Aenean
non
velit
tortor.
Nullam
adipiscing
Nulla
facilisi.
Lorem
ipsum
malesuada
aliquam.
Mauris
dignissim,
urna
dolor
sit
amet,
quis
iaculis
tempus,
justo
libero
por6tor
consectetur
adipiscing
elit.
est,
nec
eleifend
est
elit
vitae
ante.
Mauris
vehicula
Curabitur
interdum
luctus
metus,
in
ves;bulum
dictum.
pulvinar
lectus
rutrum
sit
amet.
Duis
Aenean
non
velit
tortor.
gravida,
metus
in
dictum
eleifend,
dolor
Nullam
adipiscing
risus
;ncidunt
ligula,
non
volutpat
nulla
malesuada
aliquam.
sapien
in
elit.
Nulla
rutrum
erat
id
neque
Mauris
dignissim,
urna
suscipit
eu
ultricies
odio
sollicitudin.
quis
iaculis
tempus,
justo
Aliquam
a
mi
vel
eros
placerat
hendrerit.
libero
por6tor
est,
nec
Phasellus
por6tor,
augue
sit
amet
eleifend
est
elit
vitae
ante.
vulputate
venena;s,
dui
leo
commodo
Curabitur
interdum
luctus
odio,
a
euismod
turpis
ligula
in
elit.
metus.
27. <esi:include src="..." />
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
In
vel
nulla
arcu,
vitae
cursus
nunc.
Integer
semper
turpis
et
enim
por6tor
iaculis.
Nulla
facilisi.
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
Mauris
vehicula
ves;bulum
dictum.
Aenean
non
velit
tortor.
Nullam
adipiscing
malesuada
aliquam.
Mauris
dignissim,
urna
quis
iaculis
tempus,
justo
libero
por6tor
est,
nec
eleifend
est
elit
vitae
ante.
Curabitur
interdum
luctus
metus,
in
pulvinar
lectus
rutrum
sit
amet.
Duis
gravida,
metus
in
dictum
eleifend,
dolor
risus
;ncidunt
ligula,
non
volutpat
nulla
sapien
in
elit.
Nulla
rutrum
erat
id
neque
suscipit
eu
ultricies
odio
sollicitudin.
Aliquam
a
mi
vel
eros
placerat
hendrerit.
Phasellus
por6tor,
augue
sit
amet
vulputate
venena;s,
dui
leo
commodo
odio,
a
euismod
turpis
ligula
in
elit.
29. Lorem
ipsum
dolor
sit
amet,
1
2
Symfony2 Application
Lorem
ipsum
Reverse Proxy
dolor
Client
3
Lorem
ipsum
Lorem
dolor
sit
ipsum
amet,
dolor
4
30. base layout
layout
Lorem
ipsum
dolor
sit
amet,
Lorem
ipsum
dolor
sit
consectetur
adipiscing
elit.
In
vel
nulla
Lorem
ipsum
dolor
sit
amet,
consectetur
included page
main template amet,
consectetur
arcu,
vitae
cursus
nunc.
Integer
semper
included page adipiscing
elit.
In
vel
turpis
et
enim
por6tor
iaculis.
Nulla
adipiscing
elit.
In
vel
nulla
nulla
arcu,
vitae
cursus
facilisi.
Lorem
ipsum
dolor
sit
amet,
arcu,
vitae
cursus
nunc.
nunc.
Integer
semper
consectetur
adipiscing
elit.
Mauris
Integer
semper
turpis
et
turpis
et
enim
por6tor
vehicula
ves;bulum
dictum.
Aenean
enim
por6tor
iaculis.
iaculis.
Nulla
facilisi.
non
velit
tortor.
Nullam
adipiscing
Nulla
facilisi.
Lorem
ipsum
Lorem
ipsum
dolor
sit
malesuada
aliquam.
Mauris
dignissim,
dolor
sit
amet,
amet,
consectetur
urna
quis
iaculis
tempus,
justo
libero
consectetur
adipiscing
elit.
adipiscing
elit.
Mauris
por6tor
est,
nec
eleifend
est
elit
vitae
Mauris
vehicula
vehicula
ves;bulum
ante.
Curabitur
interdum
luctus
metus,
ves;bulum
dictum.
dictum.
Aenean
non
in
pulvinar
lectus
rutrum
sit
amet.
Duis
Aenean
non
velit
tortor.
velit
tortor.
Nullam
gravida,
metus
in
dictum
eleifend,
Nullam
adipiscing
adipiscing
malesuada
dolor
risus
;ncidunt
ligula,
non
malesuada
aliquam.
aliquam.
volutpat
nulla
sapien
in
elit.
Nulla
Mauris
dignissim,
urna
rutrum
erat
id
neque
suscipit
eu
quis
iaculis
tempus,
justo
Lorem
ipsum
dolor
sit
ultricies
odio
sollicitudin.
Aliquam
a
mi
libero
por6tor
est,
nec
amet,
consectetur
included page
vel
eros
placerat
hendrerit.
Phasellus
eleifend
est
elit
vitae
ante.
adipiscing
elit.
In
vel
por6tor,
augue
sit
amet
vulputate
Curabitur
interdum
luctus
nulla
arcu,
vitae
venena;s,
dui
leo
commodo
odio,
a
metus.
cursus
nunc.
euismod
turpis
ligula
in
elit.
31. Goal
Be as dynamic as needed
Hit the application as less as possible
32. P2Lorem
ipsum
dolor
sit
amet,
Lorem
ipsum
dolor
sit
consectetur
adipiscing
elit.
In
vel
nulla
amet,
consectetur
arcu,
vitae
cursus
nunc.
Integer
adipiscing
elit.
In
vel
semper
turpis
et
enim
por6tor
nulla
arcu,
vitae
cursus
iaculis.
Nulla
facilisi.
Lorem
ipsum
nunc.
Integer
semper
dolor
sit
amet,
consectetur
adipiscing
turpis
et
enim
elit.
Mauris
vehicula
ves;bulum
por6tor
iaculis.
Nulla
dictum.
Aenean
non
velit
tortor.
facilisi.
Lorem
ipsum
Nullam
adipiscing
malesuada
aliquam.
dolor
sit
amet,
P1
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
In
vel
Mauris
dignissim,
urna
quis
iaculis
tempus,
justo
libero
por6tor
est,
nec
eleifend
est
elit
vitae
ante.
Curabitur
consectetur
adipiscing
elit.
Mauris
vehicula
ves;bulum
dictum.
nulla
arcu,
vitae
cursus
nunc.
Integer
semper
turpis
et
enim
interdum
luctus
metus,
in
pulvinar
Aenean
non
velit
por6tor
iaculis.
Nulla
facilisi.
Lorem
ipsum
dolor
sit
amet,
lectus
rutrum
sit
amet.
Duis
gravida,
consectetur
adipiscing
elit.
Mauris
vehicula
ves;bulum
dictum.
tortor.
Nullam
metus
in
dictum
eleifend,
dolor
risus
adipiscing
malesuada
Aenean
non
velit
tortor.
Nullam
adipiscing
malesuada
aliquam.
Mauris
dignissim,
urna
quis
iaculis
tempus,
justo
libero
por6tor
10S
;ncidunt
ligula,
non
volutpat
nulla
sapien
in
elit.
5S
aliquam
est,
nec
eleifend
est
elit
vitae
ante.
Curabitur
interdum
luctus
metus,
in
pulvinar
lectus
rutrum
sit
amet.
Duis
gravida,
metus
in
dictum
eleifend,
dolor
risus
;ncidunt
ligula,
non
volutpat
nulla
sapien
in
elit.
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
In
vel
nulla
arcu,
vitae
cursus
nunc.
Integer
semper
turpis
et
Expiration
enim
por6tor
iaculis.
Nulla
facilisi.
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
Mauris
vehicula
ves;bulum
dictum.
Aenean
non
velit
tortor.
Nullam
adipiscing
malesuada
aliquam.
Mauris
dignissim,
urna
quis
iaculis
tempus,
justo
libero
por6tor
10S
est,
nec
eleifend
est
elit
vitae
ante.
Curabitur
interdum
luctus
P3 Lorem
ipsum
dolor
sit
amet,
Lorem
ipsum
dolor
sit
metus,
in
pulvinar
lectus
rutrum
sit
amet
consectetur
adipiscing
elit.
In
vel
nulla
amet,
consectetur
arcu,
vitae
cursus
nunc.
Integer
adipiscing
elit.
In
vel
semper
turpis
et
enim
por6tor
Expiration
nulla
arcu,
vitae
cursus
iaculis.
Nulla
facilisi.
Lorem
ipsum
nunc.
Integer
semper
dolor
sit
amet,
consectetur
adipiscing
turpis
et
enim
Expiration
elit.
Mauris
vehicula
ves;bulum
por6tor
iaculis.
Nulla
dictum.
Aenean
non
velit
tortor.
facilisi.
Lorem
ipsum
Nullam
adipiscing
malesuada
aliquam.
dolor
sit
amet,
Mauris
dignissim,
urna
quis
iaculis
consectetur
adipiscing
& tempus,
justo
libero
por6tor
est,
nec
eleifend
est
elit
vitae
ante.
Curabitur
interdum
luctus
metus,
in
pulvinar
elit.
Mauris
vehicula
ves;bulum
dictum.
Aenean
non
velit
Validation 10S
lectus
rutrum
sit
amet.
Duis
gravida,
tortor.
Nullam
metus
in
dictum
eleifend,
dolor
risus
adipiscing
malesuada
ETag
;ncidunt
ligula,
non
volutpat
nulla
sapien
in
elit.
5S
aliquam
ETag
33. PHP SF 300
Web Server
P1 100 P2 100 P3 100 symfony
app
Requests
Response
34. PHP SF 300
Web Server
symfony cache
P1 10 P2 100 P3 100 symfony
app
Requests
P1 90
Response
35. PHP SF 201
Web Server
symfony cache
P1 1 P2 100 P3 100 symfony
app
Requests
P1 99 management!
No HTTP
Response
36. PHP SF2 300
Web Server
P1 100 P2 100 P3 100 Symfony2
app
Requests
Response
44. There are only two hard things in Computer Science:
cache invalidation and naming things. -- Phil Karlton
http://martinfowler.com/bliki/TwoHardThings.html
50. // do only what is needed to compute
// the ETag and Last-Modified header values
$response = $this->createResponse();
$response->setEtag('post_'.$post->getId());
$response->setLastModified($post->getPublishedAt());
if ($response->isNotModified($this->getRequest())) {
return $response;
}
// do some heavy stuff here
return $this->render('...:post', $vars, $response);
51. // from http://varnish-cache.org/wiki/FAQ/Compression
// normalize Accept-Encoding HTTP header
protected function lookup(Request $request)
{
if ($ae = $request->headers->get('Accept-Encoding')) {
if (preg_match('/.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$/',
$request->getRequestUri())) {
// no point in compressing these
$request->headers->delete('Accept-Encoding');
} elseif (false !== strpos($ae, 'gzip')) {
$request->headers->set('Accept-Encoding', 'gzip');
} elseif (false !== strpos($ae, 'deflate')) {
$request->headers->set('Accept-Encoding', 'deflate');
} else {
// unkown algorithm
$request->headers->delete('Accept-Encoding');
}
}
return parent::lookup($request);
}