Varnish is an HTTP accelerator and caching reverse proxy that can be used to speed up websites. It works by caching responses from the web server to reduce load and serve subsequent requests from the cache. The HTTP specification defines caching mechanisms like expiration dates, validation of cached responses using headers like Last-Modified and ETag, and conditional requests to prevent generating duplicate responses. Varnish leverages these caching features to improve website performance.
200, 404, 302. Is it a lock combination? A phone number? No, they're HTTP status codes! As we develop Web applications, we encounter these status codes and others, and often we make decisions about which ones to return without giving much thought to their meaning or context. It's time to take a deeper look at HTTP. Knowing the methods, headers, and status codes, what they mean, and how to use them can help you develop richer Internet applications. Join Ben Ramsey as he takes you on a journey through RFC 2616 to discover some of the gems of HTTP.
Walks through the basics of the HTTP protocol, URLs, cookies and caching, with tricks and tips that can be used by web developers. From a Geek.class I did on Oct 6, 2011 for Meet the Geeks.
A talk about how HTTP caching features that can and should be used to reduce origin server loads and traffic whilst retaining very small cache expire times. More specifically will cover what basic http headers are used by standard cache devices and how they differ, as well as how can they be used in combination to achieve smart cache revalidation.
Presentation explains advanced HTTP caching mechanisms like decomposition, stale content delivery, purging based on tags and caching of user-specific data.
200, 404, 302. Is it a lock combination? A phone number? No, they're HTTP status codes! As we develop Web applications, we encounter these status codes and others, and often we make decisions about which ones to return without giving much thought to their meaning or context. It's time to take a deeper look at HTTP. Knowing the methods, headers, and status codes, what they mean, and how to use them can help you develop richer Internet applications. Join Ben Ramsey as he takes you on a journey through RFC 2616 to discover some of the gems of HTTP.
Walks through the basics of the HTTP protocol, URLs, cookies and caching, with tricks and tips that can be used by web developers. From a Geek.class I did on Oct 6, 2011 for Meet the Geeks.
A talk about how HTTP caching features that can and should be used to reduce origin server loads and traffic whilst retaining very small cache expire times. More specifically will cover what basic http headers are used by standard cache devices and how they differ, as well as how can they be used in combination to achieve smart cache revalidation.
Presentation explains advanced HTTP caching mechanisms like decomposition, stale content delivery, purging based on tags and caching of user-specific data.
200, 404, 302. Is it a lock combination? A phone number? No, they're HTTP status codes! As we develop Web applications, we encounter these status codes and others, and often we make decisions about which ones to return without giving much thought to their meaning or context. It's time to take a deeper look at HTTP. Knowing the methods, headers, and status codes, what they mean, and how to use them can help you develop richer Internet applications. Join Ben Ramsey as he takes you on a journey through RFC 2616 to discover some of the gems of HTTP.
Web Server Technologies I: HTTP & Getting StartedPort80 Software
Introduction to HTTP: TCP/IP and application layer protocols, URLs, resources and MIME Types, HTTP request/response cycle and proxies. Setup and deployment: Planning Web server & site deployments, Site structure and basic server configuration, Managing users and hosts.
- HipHop – replacement for Zend PHP
- HPHPc and HHVM
- Supported OS
- Compatibility with PHP: version, extensions
- Operational modes: CLI, Server
- Configuration features
- Performance: capital.ua on Symfony 1.4, Sylius on Symfony 2.3
- HHVM with your project: Vagrant
- Popular frameworks and CMS support
- Competitors: kPHP
Presentation given at the International PHP conference in Mainz, October 2012, dealing with a bit of history about the HTTP protocol, SPDY and the future (HTTP/2.0).
Scaling out on the cloud is easy. Especially, if you have a software provisioning system that helps you to deploy your environment wherever you want. This session will give you an overview of the fantastic new features of HAProxy V 1.5, and how you can integrate it into your environment to build a high available environment, using open source software. Starting with a single-webserver + mysql setup provisioned via chef, we will deploy an HA Proxy Cluster in front and scale out your nginx and mysql database backend.
https://www.youtube.com/watch?v=Dv1bpmYV0vU
Channels is the most exciting thing to happen to Django since, well, Django! It is both an elegant and backwards compatible extension of the core Django request response model to allow direct support of WebSockets and lightweight async tasks. This talk will cover the current state of Channels, work through an asynchronous task example, touch on deployment and point towards other resources.
The web is live. APIs give us access to continuously changing data. We discuss ways to get real-time data into your app, how to handle data processing and what to do when you get thousands of updates per second.
200, 404, 302. Is it a lock combination? A phone number? No, they're HTTP status codes! As we develop Web applications, we encounter these status codes and others, and often we make decisions about which ones to return without giving much thought to their meaning or context. It's time to take a deeper look at HTTP. Knowing the methods, headers, and status codes, what they mean, and how to use them can help you develop richer Internet applications. Join Ben Ramsey as he takes you on a journey through RFC 2616 to discover some of the gems of HTTP.
Web Server Technologies I: HTTP & Getting StartedPort80 Software
Introduction to HTTP: TCP/IP and application layer protocols, URLs, resources and MIME Types, HTTP request/response cycle and proxies. Setup and deployment: Planning Web server & site deployments, Site structure and basic server configuration, Managing users and hosts.
- HipHop – replacement for Zend PHP
- HPHPc and HHVM
- Supported OS
- Compatibility with PHP: version, extensions
- Operational modes: CLI, Server
- Configuration features
- Performance: capital.ua on Symfony 1.4, Sylius on Symfony 2.3
- HHVM with your project: Vagrant
- Popular frameworks and CMS support
- Competitors: kPHP
Presentation given at the International PHP conference in Mainz, October 2012, dealing with a bit of history about the HTTP protocol, SPDY and the future (HTTP/2.0).
Scaling out on the cloud is easy. Especially, if you have a software provisioning system that helps you to deploy your environment wherever you want. This session will give you an overview of the fantastic new features of HAProxy V 1.5, and how you can integrate it into your environment to build a high available environment, using open source software. Starting with a single-webserver + mysql setup provisioned via chef, we will deploy an HA Proxy Cluster in front and scale out your nginx and mysql database backend.
https://www.youtube.com/watch?v=Dv1bpmYV0vU
Channels is the most exciting thing to happen to Django since, well, Django! It is both an elegant and backwards compatible extension of the core Django request response model to allow direct support of WebSockets and lightweight async tasks. This talk will cover the current state of Channels, work through an asynchronous task example, touch on deployment and point towards other resources.
The web is live. APIs give us access to continuously changing data. We discuss ways to get real-time data into your app, how to handle data processing and what to do when you get thousands of updates per second.
In a HTTP/2 World - DeccanRubyConf 2017Douglas Vaz
Why HTTP/1.1 needs to be phased out and how to leverage HTTP/2 features for improved web development practices. Also, the state of Ruby and how to use the new protocol even though support is limited.
As presented at ZendCon, Confoo, LaraconEU, ZgPHP, PFCongres and Fronteers User Group. An overview of some intermediate level HTTP features and how they might be useful in practice.
Introduction to HTTP - Hypertext Transfer ProtocolSantiago Basulto
This is an Introduction to HTTP and Client Server architecture by https://rmotr.com.
As part of our Flask Tutorial Step By Step. You can also see an explanation of this lesson in a video lesson: http://learn.rmotr.com/python/flask-tutorial-step-by-step/first-steps/introduction-to-http
ExaProxy is an HTTP proxy allowing its users to modify requested page, like SQUID redirectors, with forked helpers, but provide the same level of control as ICAP. It supports HTTPS (through CONNECT) and the HAPROXY protocol.
Speedy App: Frontend Performance ConsiderationsPierre Spring
Execution time in the backend is not all there is to the speed of a web application. In this talk, we'll look at the basic enhancements we can make to get an applications that truly feels snappy!
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Varnish
1. Varnish 3
The easy way
to speed up your websites
@fabpot
fabien@symfony.com
http://www.flickr.com/photos/laserstars/908946494
2. Varnish is an HTTP accelerator
http://www.flickr.com/photos/stuckincustoms/3232133635
3. Varnish is a Caching Reverse Proxy
http://www.flickr.com/photos/stuckincustoms/3232133635
4. Kinds of caches
http://www.flickr.com/photos/jnarin/2993803017
5. Browser Browser Browser
Browser Cache Browser Cache Browser Cache
Within a Company
On the server side
Your PHP application
6. Browser Browser Browser Browser Browser Browser
Browser Cache Browser Cache Browser Cache Browser Cache Browser Cache Browser Cache
Proxy Cache Proxy Cache
Within a Company Within a Company
On the server side
Your PHP application
7. Browser Browser Browser Browser Browser
Browser Cache Browser Cache Browser Cache Browser Cache Browser Cache
Proxy Cache
Within a Company
On the server side
Reverse Proxy Cache
Your PHP application
10. The Client sends a Request to the Server
The Server sends back a Response to the Client
A Client (browser, bot, WS, curl, …)
A Server (Apache, nginx, …)
The Request and the Response are HTTP messages
19. GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Your PHP application
Some Cache
Browser
GET /foo
HTTP/1.1 200 OK
Cache-Control: s-
maxage=10
Hello
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Cache-‐Control:
s-‐maxage=10
Hello
Hello
20. Before expiration
GET /foo HTTP/1.1 Your application is not called
Host: foo.org
Your PHP application
Some Cache
Browser
GET /foo
HTTP/1.1 200 OK
Cache-Control: s-
maxage=10
Hello
HTTP/1.1 200 OK
Hello
21. After expiration
GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Some Cache fresh
Your PHP application
Not
Browser
GET /foo
HTTP/1.1 200 OK
Cache-Control: s-
maxage=10
Hello
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Cache-Control: s-maxage=10
Hello
Hello
24. GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Your PHP application
Some Cache
Browser
GET /foo
HTTP/1.1 200 OK
Last-Modified: Thu,
…
Hello
HTTP/1.1 200 OK HTTP/1.1 200 OK
Last-Modified: Thu,
… Last-Modified: Thu,
…
Hello Hello
25. If the resource has not changed
GET /foo HTTP/1.1
GET /foo HTTP/1.1
Host: foo.org
Host: foo.org
If-Modified-Since: Thu,
Your PHP application
Some Cache
Browser
GET /foo
HTTP/1.1 200 OK
Last-Modified: Thu,
…
Hello
HTTP/1.1 200 OK HTTP/1.1 304 Not Modified
Last-Modified: Thu,
…
Hello
26. If the resource has changed
GET /foo HTTP/1.1
GET /foo HTTP/1.1
Host: foo.org
Host: foo.org
If-Modified-Since: Thu,
Your PHP application
Some Cache
Browser
GET /foo /foo
GET
HTTP/1.1 200 200 OK
HTTP/1.1 OK
Last-Modified: Sun,…
Last-Modified: Thu,…
Hello Hello
HTTP/1.1 200 OK HTTP/1.1 200 OK
Last-Modified: Sun,
… Last-Modified: Sun,
…
Hello Hello
27. You can combine HTTP headers
the way you want
Expiration wins over Validation
28. GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Your PHP application
Some Cache
Browser
GET /foo
HTTP/1.1 200 OK
Etag: abcdef
Cache-‐Control:
max-‐
age=10
…
Hello
HTTP/1.1 200 OK HTTP/1.1 200 OK
ETag: abcdef ETag: abcdef
Cache-‐Control:
max-‐age=10 Cache-‐Control:
max-‐age=10
Hello Hello
29. Before expiration
GET /foo HTTP/1.1
Host: foo.org
Your application is not called
Your PHP application
Some Cache
Browser
GET /foo
HTTP/1.1 200 OK
Etag: abcdef
Cache-‐Control:
max-‐
age=10
…
Hello
HTTP/1.1 200 OK
ETag: abcdef
Cache-‐Control:
max-‐age=10
Hello
30. After expiration
but resource still valid
GET /foo HTTP/1.1
GET /foo HTTP/1.1
Host: foo.org
Host: foo.org
If-None-Match: abcdef
Your PHP application
Some Cache
Browser
GET /foo
HTTP/1.1 200 OK
Etag: abcdef
Cache-‐Control:
max-‐
age=10
…
Hello
HTTP/1.1 200 OK HTTP/1.1 304 Not Modified
ETag: abcdef Cache-‐Control:
max-‐age=10
Cache-‐Control:
max-‐age=10
Hello
32. GET /foo HTTP/1.1 GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org Host: foo.org
Your PHP application
Reverse Proxy Cache
GET /foo GET /foo
HTTP/1.1 200 OK HTTP/1.1 200 OK
C-C: max-age=600 C-C: max-age=600
Bob’s Cache
… …
Hello Hello
Bob
HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK
C-C: max-age=600 C-C: max-age=600 C-C: max-age=600
Hello Hello Hello
33. GET /foo HTTP/1.1
Host: foo.org
Your PHP application
Reverse Proxy Cache
GET /foo GET /foo
HTTP/1.1 200 OK HTTP/1.1 200 OK
C-C: max-age=600 C-C: max-age=600
Bob’s Cache
… …
Hello Hello
Bob
HTTP/1.1 200 OK
C-C: max-age=600
Hello
34. GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Your PHP application
Reverse Proxy Cache
GET /foo GET /foo
HTTP/1.1 200 OK HTTP/1.1 200 OK
Browser Cache
C-C: max-age=600 C-C: max-age=600
… …
Hello Hello
Alice
HTTP/1.1 200 OK HTTP/1.1 200 OK
C-C: max-age=600 C-C: max-age=600
Hello Hello
36. GET /foo HTTP/1.1 GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org Host: foo.org
Your PHP application
Reverse Proxy Cache
GET /foo GET /foo
HTTP/1.1 200 OK HTTP/1.1 200 OK
Etag: abcde Etag: abcde
Bob’s Cache
… …
Hello Hello
Bob
HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK
Etag: abcde Etag: abcde Etag: abcde
Hello Hello Hello
37. GET /foo HTTP/1.1 GET /foo HTTP/1.1
GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Host: foo.org
If-None-Match: ab If-None-Match: ab
Your PHP application
Reverse Proxy Cache
GET /foo GET /foo
HTTP/1.1 200 OK HTTP/1.1 200 OK
Etag: ab Etag: ab
Bob’s Cache
… …
Hello Hello
Bob
HTTP/1.1 200 OK
Etag: ab
304 Not Modified 304 Not Modified
Hello
38. GET /foo HTTP/1.1
GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org
Host: foo.org Host: foo.org
If-None-Match: ab
Your PHP application
Reverse Proxy Cache
GET /foo GET /foo
Browser Cache
HTTP/1.1 200 OK HTTP/1.1 200 OK
Etag: ab Etag: ab
… …
Hello Hello
Alice
HTTP/1.1 200 OK HTTP/1.1 200 OK
Etag: ab Etag: ab
304 Not Modified
Hello Hello
89. cacheable for 10 minutes
cacheable for 5 seconds
Lorem
ipsum
dolor
sit
amet,
consectetur
Lorem
ipsum
dolor
sit
amet,
adipiscing
elit.
In
vel
nulla
arcu,
vitae
cursus
consectetur
adipiscing
elit.
nunc.
Integer
semper
turpis
et
enim
In
vel
nulla
arcu,
vitae
porCtor
iaculis.
Nulla
facilisi.
Lorem
ipsum
cursus
nunc.
Integer
dolor
sit
amet,
consectetur
adipiscing
elit.
semper
turpis
et
enim
Mauris
vehicula
vesFbulum
dictum.
Aenean
porCtor
iaculis.
Nulla
non
velit
tortor.
Nullam
adipiscing
facilisi.
Lorem
ipsum
dolor
malesuada
aliquam.
Mauris
dignissim,
urna
sit
amet,
consectetur
quis
iaculis
tempus,
justo
libero
porCtor
est,
adipiscing
elit.
Mauris
nec
eleifend
est
elit
vitae
ante.
Curabitur
vehicula
vesFbulum
dictum.
interdum
luctus
metus,
in
pulvinar
lectus
Aenean
non
velit
tortor.
rutrum
sit
amet.
Duis
gravida,
metus
in
Nullam
adipiscing
dictum
eleifend,
dolor
risus
Fncidunt
ligula,
malesuada
aliquam.
Mauris
non
volutpat
nulla
sapien
in
elit.
Nulla
dignissim,
urna
quis
iaculis
rutrum
erat
id
neque
suscipit
eu
ultricies
tempus,
justo
libero
odio
sollicitudin.
Aliquam
a
mi
vel
eros
porCtor
est,
nec
eleifend
placerat
hendrerit.
Phasellus
porCtor,
est
elit
vitae
ante.
Curabitur
augue
sit
amet
vulputate
venenaFs,
dui
leo
interdum
luctus
metus.
commodo
odio,
a
euismod
turpis
ligula
in
elit.
90. ESI… or Edge Side Includes
http://www.w3.org/TR/esi-lang
91. t ESI
hou
Wit
Lorem
ipsum
dolor
sit
amet,
consectetur
Lorem
ipsum
dolor
sit
amet,
adipiscing
elit.
In
vel
nulla
arcu,
vitae
cursus
consectetur
adipiscing
elit.
nunc.
Integer
semper
turpis
et
enim
In
vel
nulla
arcu,
vitae
porCtor
iaculis.
Nulla
facilisi.
Lorem
ipsum
cursus
nunc.
Integer
dolor
sit
amet,
consectetur
adipiscing
elit.
semper
turpis
et
enim
Mauris
vehicula
vesFbulum
dictum.
Aenean
porCtor
iaculis.
Nulla
non
velit
tortor.
Nullam
adipiscing
facilisi.
Lorem
ipsum
dolor
malesuada
aliquam.
Mauris
dignissim,
urna
sit
amet,
consectetur
quis
iaculis
tempus,
justo
libero
porCtor
est,
adipiscing
elit.
Mauris
nec
eleifend
est
elit
vitae
ante.
Curabitur
vehicula
vesFbulum
dictum.
interdum
luctus
metus,
in
pulvinar
lectus
Aenean
non
velit
tortor.
rutrum
sit
amet.
Duis
gravida,
metus
in
Nullam
adipiscing
dictum
eleifend,
dolor
risus
Fncidunt
ligula,
malesuada
aliquam.
Mauris
non
volutpat
nulla
sapien
in
elit.
Nulla
dignissim,
urna
quis
iaculis
rutrum
erat
id
neque
suscipit
eu
ultricies
tempus,
justo
libero
odio
sollicitudin.
Aliquam
a
mi
vel
eros
porCtor
est,
nec
eleifend
placerat
hendrerit.
Phasellus
porCtor,
est
elit
vitae
ante.
Curabitur
augue
sit
amet
vulputate
venenaFs,
dui
leo
interdum
luctus
metus.
commodo
odio,
a
euismod
turpis
ligula
in
elit.
92. ESI
W ith
<esi:include src="..." />
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
In
vel
nulla
arcu,
vitae
cursus
nunc.
Integer
semper
turpis
et
enim
porCtor
iaculis.
Nulla
facilisi.
Lorem
ipsum
dolor
sit
amet,
consectetur
adipiscing
elit.
Mauris
vehicula
vesFbulum
dictum.
Aenean
non
velit
tortor.
Nullam
adipiscing
malesuada
aliquam.
Mauris
dignissim,
urna
quis
iaculis
tempus,
justo
libero
porCtor
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
Fncidunt
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
porCtor,
augue
sit
amet
vulputate
venenaFs,
dui
leo
commodo
odio,
a
euismod
turpis
ligula
in
elit.
93. GET /foo HTTP/1.1 GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org Host: foo.org
HTTP/1.1 200 OK
C-C: s-maxage=600
Lorem
<esi:include
ipsum
src="hNp.."
/>
dolor
Your PHP application
Gateway Cache
Browser Cache
GET /bar HTTP/1.1
Browser
Host: foo.org
HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK
C-C: s-maxage=5
Lorem
ipsum
Lorem
Lorem
ipsum
Lorem
Lorem
ipsum
dolor
sit
amet,
ipsum
dolor
sit
amet,
ipsum
dolor
dolor dolor
GET /bar
C-C: s-maxage=5
Lorem
GET /foo
C-C: s-maxage=600
Lor <esi:include />
94. GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Your PHP application
Gateway Cache
Browser Cache
Browser
HTTP/1.1 200 OK HTTP/1.1 200 OK
Lorem
ipsum
Lorem
Lorem
ipsum
Lorem
dolor
sit
amet,
ipsum
dolor
sit
amet,
ipsum
dolor dolor
GET /bar
C-C: s-maxage=5
Lorem
GET /foo
C-C: s-maxage=600
2 seconds later… Lor <esi:include />
95. GET /foo HTTP/1.1 GET /foo HTTP/1.1
Host: foo.org Host: foo.org
Your PHP application
Gateway Cache
Browser Cache
GET /bar HTTP/1.1
Browser
Host: foo.org
HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK
C-C: s-maxage=5
Lorem
ipsum
Lorem
Lorem
ipsum
Lorem
Lorem
ipsum
dolor
sit
amet,
ipsum
dolor
sit
amet,
ipsum
dolor
dolor dolor
GET /bar
C-C: s-maxage=5
Lorem
GET /foo
C-C: s-maxage=600
7 seconds later… Lor <esi:include />