SlideShare uma empresa Scribd logo
1 de 98
TAKING LARAVEL TO
THE EDGE WITH HTTP
CACHING & VARNISH
By Thijs Feryn
Slow websites
SUCK
WEB PERFORMANCE IS AN
ESSENTIAL PART OF THE
USER EXPERIENCE
SLOW~DOWN
THROWING


SERVERS


ATTHEPROBLEM
MO' MONEY


MO' SERVERS


MO' PROBLEMS
IDENTIFY SLOWEST PARTS
OPTIMIZE
AFTER A WHILE YOU HIT THE LIMITS
CACHE
HI, I'M THIJS
I'M THE TECH
EVANGELIST
AT
9,000,000 WEBSITES


21% OF THE TOP 10K WEBSITES
I'M @THIJSFERYN
USER SERVER
REVERSE CACHING PROXY
USER PROXY SERVER
USER PROXY SERVER
THE EDGE
USER VARNISH SERVER
THE EDGE
BUILT FOR PERFORMANCE
THE POWER OF http://
Cache-Control: public, max-age=3600
Cache-Control: public, max-age=3600,
s-maxage=86400
Cache-Control: private, no-cache, no-store
Cache-Control: public, max-age=3600,
stale-while-revalidate=300
ORIGIN
VARNISH
GRACE
SERVE STALE
OBJECT
BACKGROUND
FETCH
Vary: Accept-Encoding, Accept-Language,
X-Forwarded-Proto
FOR YOUR EYES ONLY
NOT CACHED
VARNISH CONFIGURATION LANGUAGE
VCL CAPABILITIES
✓ REQUEST HANDLING


✓ REQUEST ROUTING


✓ RESPONSE MANIPULATION


✓ BACKEND SELECTION


✓ CONTROLLING THE CACHE


✓ DECISION-MAKING "ON THE EDGE"
vcl 4.1;


backend default {


.host = "127.0.0.1";


.port = "8080";


}


sub vcl_recv {


if(req.url ~ "^/admin(/.*|$)") {


return(pass);


}


unset req.http.Cookie;


}
I ANSWER TO #VARNISH


ON STACKOVERFLOW
THIJS@VARNISH-SOFTWARE.COM
Route::middleware('cache.headers:public;max_age=3600;etag')


->group(function () {


Route::get('/', function () {


return view('welcome');


});


});
HTTP/1.1 200 OK


Host: localhost:8000


Date: Mon, 25 Apr 2022 15:44:58 GMT


Connection: close


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


Cache-Control: no-cache, private


Date: Mon, 25 Apr 2022 15:44:58 GMT


Set-Cookie: XSRF-
TOKEN=eyJpdiI6IjRvRndmL2pHcnFQamZBYnBxSFgyQWc9PSIsInZhbHVlIjoiM200RUU0N0h
Lc3YzN3Jaa21MQVdzaENDSEg4cEU4bG1TWk5pWlgwMjZyTko0cjVmUC9kYjhGVmtYem8xanBu
ZlFwT1ZJT3grR0RwWURoMGppTnh2K09kOGtHQmc4V3JYUmZrVyt2OERIdGNkZXloNHYzZWNDd
GJ3MGZRWk1oMkwiLCJtYWMiOiIxOTZlMTAwNTY2MTM5NmY2Zjg1OGIwNTQxNjUzZDlhZjQ2ZG
JlZDQzZjRjZTQ2MjBkNzQxYzc2MTc2NzJmY2QwIiwidGFnIjoiIn0%3D; expires=Mon,
25-Apr-2022 17:44:58 GMT; Max-Age=7200; path=/; samesite=lax


Set-Cookie:
laravel_session=eyJpdiI6Im1PcExWeWZkVkpDTFZpajR2TUtheWc9PSIsInZhbHVlIjoid
EpTRGpldjJYREFYOTBvaHI0RDlOeTI0NHM0bGh5cVE3QmlqMjBBZ3p1QWZRdC92ek9OUThaaU
tDQndjSi9adnBtQTRaWlpUVk9EQk80Z2drUjREQmJJdDBicGZ0bjNiTlNxckd4Mm5zNWpkM1B
mcTMzREtzMUsrMVBZeUdXd0kiLCJtYWMiOiIyNDY0NmU5ZTMzNTAxODM2Y2E4YzNhMDRhMWU4
NjBkMzRiYzg4MDc4MjQ1MDk3NDczZDI5ZjVlNzc3MzcxOWU3IiwidGFnIjoiIn0%3D;
expires=Mon, 25-Apr-2022 17:44:58 GMT; Max-Age=7200; path=/; httponly;
samesite=lax
Route::withoutMiddleware([StartSession::class,
ShareErrorsFromSession::class, VerifyCsrfToken::class])


->group(function () {


Route::middleware('cache.headers:public;max_age=3600;etag')


->group(function () {


Route::get('/', function () {


return view('welcome');


});


});


});
Route::withoutMiddleware([StartSession::class,
ShareErrorsFromSession::class, VerifyCsrfToken::class])


->group(function () {


Route::middleware('cache.headers:public;max_age=3600;etag')


->group(function () {


Route::get('/', function () {


return view('welcome');


});


});


});
HTTP/1.1 200 OK


Host: 127.0.0.1:8000


Date: Mon, 25 Apr 2022 15:34:44 GMT


Connection: close


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


Cache-Control: max-age=3600, public


Date: Mon, 25 Apr 2022 15:34:44 GMT


ETag: "13b73edae8443990be1aa8f1a483bc27"
ONLY FETCH PAYLOAD THAT HAS CHANGED
HTTP/1.1 200 OK
OTHERWISE:


HTTP/1.1 304 Not Modified
VARNISH SUPPORTS


CONDITIONAL REQUESTS


FOR CLIENTS & BACKENDS
GET / HTTP/1.1


Host: 127.0.0.1:8000


If-None-Match: "13b73edae8443990be1aa8f1a483bc27"
HTTP/1.1 304 Not Modified


Host: 127.0.0.1:8000


Date: Mon, 25 Apr 2022 15:34:44 GMT


Connection: close


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


Cache-Control: max-age=3600, public


Date: Mon, 25 Apr 2022 15:34:44 GMT


ETag: "13b73edae8443990be1aa8f1a483bc27"
QUICKLY
EARLY
<?php




namespace AppHttpMiddleware;


use IlluminateHttpRequest;


use IlluminateSupportFacadesCache;


use Closure;


use SymfonyComponentHttpFoundationResponse;


class NotModified


{


public function handle(Request $request, Closure $next)


{


if (!$request->isMethodCacheable()) {


return $next($request);


}


$etag = Cache::get('etag:'.md5($request->getUri()));


$cacheControl = Cache::get('etag-cache-control:'.md5(


$request->getUri()));


$response = new Response('',304,


['ETag' => $etag, 'Cache-Control' => $cacheControl]);


if($response->isNotModified(($request))) {


return $response;


}
$response = $next($request);


Cache::put('etag:'.md5($request->getUri()),


$response->headers->get('ETag'),10);


Cache::put('etag-cache-control:'.md5($request->getUri()),


$response->headers->get('Cache-Control'),10);


return $response;


}


}
NO CACHE
PLACEHOLDERS
SEPARATE
HTTP REQUEST
AJAX
EDGE-SIDE INCLUDES ESI
<esi:include src="/header" />
ESI
✓ PLACEHOLDER


✓ PARSED BY VARNISH


✓ OUTPUT IS A COMPOSITION OF BLOCKS


✓ STATE PER BLOCK


✓ TTL PER BLOCK
VARNISH Surrogate-Capability: key="ESI/1.0"
Surrogate-Control: content="ESI/1.0"
<esi:include src="/header" />
LARAVEL
Parse ESI placeholders
VARNISH
sub vcl_recv {


set req.http.Surrogate-Capability = "key=ESI/1.0";


}


sub vcl_backend_response {


if (beresp.http.Surrogate-Control ~ "ESI/1.0") {


unset beresp.http.Surrogate-Control;


set beresp.do_esi = true;


}


}
COMPOSITION AT THE VIEW LAYER
Route::middleware('cache.headers:public;max_age=3600;etag')->group(function
() {


Route::get('/', function () {


return view('welcome');


});


});


Route::middleware('cache.headers:private')->group(function () {


Route::get('/header', function () {


return view("header");


});


});
Route::middleware('cache.headers:public;max_age=3600;etag')->group(function
() {


Route::get('/', function () {


return view('welcome');


});


});


Route::middleware('cache.headers:private')->group(function () {


Route::get('/header', function () {


return view("header");


});


});
<!DOCTYPE html>


<html>


<body>


@esi(/header)


<p>Welcome</p>


</body>


</html>
<!DOCTYPE html>


<html>


<body>


<esi:include src="/header" />


<p>Welcome</p>


</body>


</html>
<!DOCTYPE html>


<html>


<body>


<p>The current time is 21:07:53.</p>


<p>Welcome</p>


</body>


</html>
composer require myerscode/laravel-sub-request
<?php


namespace AppProviders;


use IlluminateSupportServiceProvider;


use IlluminateSupportFacadesBlade;


class EsiServiceProvider extends ServiceProvider


{


public function boot(): void


{


Blade::directive('esi', function (string $url) {


if(str_contains($this->app->request->headers->get('Surrogate-Capability'),
'ESI/1.0')) {


return "<?php echo '<esi:include src="$url" />'; ?>";


} else {


return "<?php echo subrequest('GET','$url')->getContent(); ?>";


}


});


}


}
@esi(/header)
@esi(/header)
@esi(/nav)
<p>Main content</p>
@esi(/footer)
<?php




namespace AppHttpMiddleware;


use IlluminateHttpRequest;


use Closure;


class Surrogate


{


public function handle(Request $request, Closure $next)


{


$response = $next($request);


if(str_contains($request->headers->get('Surrogate-Capability'), 'ESI/1.0')) {


$response->headers->set('Surrogate-Control', 'content="ESI/1.0"');


}


return $response;


}


}
HOW DO YOU IDENTIFY AN
OBJECT IN CACHE?
sub vcl_hash {


hash_data(req.url);


if (req.http.host) {


hash_data(req.http.host);


} else {


hash_data(server.ip);


}


return (lookup);


}
sub vcl_hash {


hash_data(req.url);


if (req.http.host) {


hash_data(req.http.host);


} else {


hash_data(server.ip);


}


return (lookup);


}
<p>{{ __('Welcome') }}</p>
<?php


return [


'locale' => 'en',


'fallback_locale' => 'en'


];
composer require orkhanahmadov/laravel-accept-language-middleware
HTTP/1.1 200 OK


Host: localhost


Content-Language: en
GET / HTTP/1.1


Host: localhost


Accept-Language: en
HTTP/1.1 200 OK


Host: localhost


Content-Language: en
GET / HTTP/1.1


Host: localhost


Accept-Language: nl
Vary: Accept-Language
HTTP/1.1 200 OK


Host: localhost


Content-Language: en
GET / HTTP/1.1


Host: localhost


Accept-Language: en
HTTP/1.1 200 OK


Host: localhost


Content-Language: nl
GET / HTTP/1.1


Host: localhost


Accept-Language: nl
<?php




namespace AppHttpMiddleware;


use IlluminateHttpRequest;


use Closure;


class Vary


{


public function handle(Request $request, Closure $next)


{


$response = $next($request);


$response->headers->set('Vary','Accept-Language');


return $response;


}


}
YOU CAN DO ALL OF THIS IN VCL TOO
sub vcl_recv {


set req.http.Surrogate-Capability = "key=ESI/1.0";


}


sub vcl_backend_response {


set beresp.ttl = 1h;


set beresp.grace = 2h;


set beresp.http.Vary = "Accept-Language,


Accept-Encoding, X-Forwarded-Proto";


if (beresp.http.Surrogate-Control ~ "ESI/1.0") {


unset beresp.http.Surrogate-Control;


set beresp.do_esi = true;


}


}
THIS IS JUST THE TIP OF THE ICEBERG
HTTPS://VARNISH-SOFTWARE.COM/DEVELOPERS
HTTPS://WWW.VARNISH-SOFTWARE.COM/
PRODUCTS/VARNISH-CLOUD/
Taking Laravel to the edge with HTTP caching and Varnish
Taking Laravel to the edge with HTTP caching and Varnish

Mais conteúdo relacionado

Mais procurados

Data Structures- Part5 recursion
Data Structures- Part5 recursionData Structures- Part5 recursion
Data Structures- Part5 recursionAbdullah Al-hazmy
 
Operating System- Multilevel Paging, Inverted Page Table
Operating System- Multilevel Paging, Inverted Page TableOperating System- Multilevel Paging, Inverted Page Table
Operating System- Multilevel Paging, Inverted Page TableZishan Mohsin
 
Unit 4 external sorting
Unit 4   external sortingUnit 4   external sorting
Unit 4 external sortingDrkhanchanaR
 
Elements of cache design
Elements of cache designElements of cache design
Elements of cache designRohail Butt
 
Linked stacks and queues
Linked stacks and queuesLinked stacks and queues
Linked stacks and queuesRamzi Alqrainy
 
01 knapsack using backtracking
01 knapsack using backtracking01 knapsack using backtracking
01 knapsack using backtrackingmandlapure
 
Lecture6 introduction to data streams
Lecture6 introduction to data streamsLecture6 introduction to data streams
Lecture6 introduction to data streamshktripathy
 
Computer architecture virtual memory
Computer architecture virtual memoryComputer architecture virtual memory
Computer architecture virtual memoryMazin Alwaaly
 
Arrays in Data Structure and Algorithm
Arrays in Data Structure and Algorithm Arrays in Data Structure and Algorithm
Arrays in Data Structure and Algorithm KristinaBorooah
 
Pattern matching
Pattern matchingPattern matching
Pattern matchingshravs_188
 
daa-unit-3-greedy method
daa-unit-3-greedy methoddaa-unit-3-greedy method
daa-unit-3-greedy methodhodcsencet
 
Unix.system.calls
Unix.system.callsUnix.system.calls
Unix.system.callsGRajendra
 
Multi dimensional arrays
Multi dimensional arraysMulti dimensional arrays
Multi dimensional arraysAseelhalees
 
Frequent itemset mining methods
Frequent itemset mining methodsFrequent itemset mining methods
Frequent itemset mining methodsProf.Nilesh Magar
 

Mais procurados (20)

Data Structures- Part5 recursion
Data Structures- Part5 recursionData Structures- Part5 recursion
Data Structures- Part5 recursion
 
Operating System- Multilevel Paging, Inverted Page Table
Operating System- Multilevel Paging, Inverted Page TableOperating System- Multilevel Paging, Inverted Page Table
Operating System- Multilevel Paging, Inverted Page Table
 
Leftist heap
Leftist heapLeftist heap
Leftist heap
 
Unit 4 external sorting
Unit 4   external sortingUnit 4   external sorting
Unit 4 external sorting
 
Elements of cache design
Elements of cache designElements of cache design
Elements of cache design
 
Linked stacks and queues
Linked stacks and queuesLinked stacks and queues
Linked stacks and queues
 
01 knapsack using backtracking
01 knapsack using backtracking01 knapsack using backtracking
01 knapsack using backtracking
 
Daa unit 5
Daa unit 5Daa unit 5
Daa unit 5
 
single linked list
single linked listsingle linked list
single linked list
 
Lecture6 introduction to data streams
Lecture6 introduction to data streamsLecture6 introduction to data streams
Lecture6 introduction to data streams
 
Computer architecture virtual memory
Computer architecture virtual memoryComputer architecture virtual memory
Computer architecture virtual memory
 
Fp growth
Fp growthFp growth
Fp growth
 
Arrays in Data Structure and Algorithm
Arrays in Data Structure and Algorithm Arrays in Data Structure and Algorithm
Arrays in Data Structure and Algorithm
 
Heap tree
Heap treeHeap tree
Heap tree
 
Pattern matching
Pattern matchingPattern matching
Pattern matching
 
daa-unit-3-greedy method
daa-unit-3-greedy methoddaa-unit-3-greedy method
daa-unit-3-greedy method
 
Unix.system.calls
Unix.system.callsUnix.system.calls
Unix.system.calls
 
Graph traversals in Data Structures
Graph traversals in Data StructuresGraph traversals in Data Structures
Graph traversals in Data Structures
 
Multi dimensional arrays
Multi dimensional arraysMulti dimensional arrays
Multi dimensional arrays
 
Frequent itemset mining methods
Frequent itemset mining methodsFrequent itemset mining methods
Frequent itemset mining methods
 

Semelhante a Taking Laravel to the edge with HTTP caching and Varnish

Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019Thijs Feryn
 
Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021Thijs Feryn
 
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...Codemotion
 
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...Codemotion
 
Caching & validating
Caching & validatingCaching & validating
Caching & validatingSon Nguyen
 
8 Minutes On Rack
8 Minutes On Rack8 Minutes On Rack
8 Minutes On Rackdanwrong
 
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014Cliff Seal
 
Zendcon 2007 Api Design
Zendcon 2007 Api DesignZendcon 2007 Api Design
Zendcon 2007 Api Designunodelostrece
 
HTTP Caching and PHP
HTTP Caching and PHPHTTP Caching and PHP
HTTP Caching and PHPDavid de Boer
 
Top 10 F5 iRules to migrate to a modern load balancing platform
Top 10 F5 iRules to migrate to a modern load balancing platformTop 10 F5 iRules to migrate to a modern load balancing platform
Top 10 F5 iRules to migrate to a modern load balancing platformAvi Networks
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed storeSunil Komarapu
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed storeHasan Syed
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed storeirfan1008
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed storeSunil Komarapu
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed storeF K
 
Caching invalidating with managed store
Caching invalidating with managed storeCaching invalidating with managed store
Caching invalidating with managed storePraneethchampion
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed storejaveed_mhd
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed storemdfkhan625
 

Semelhante a Taking Laravel to the edge with HTTP caching and Varnish (20)

Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019
 
Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021
 
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
 
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
Thijs Feryn - Leverage HTTP to deliver cacheable websites - Codemotion Berlin...
 
Ajax basics
Ajax basicsAjax basics
Ajax basics
 
Caching & validating
Caching & validatingCaching & validating
Caching & validating
 
8 Minutes On Rack
8 Minutes On Rack8 Minutes On Rack
8 Minutes On Rack
 
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
Temporary Cache Assistance (Transients API): WordCamp Phoenix 2014
 
Caching Strategies
Caching StrategiesCaching Strategies
Caching Strategies
 
Zendcon 2007 Api Design
Zendcon 2007 Api DesignZendcon 2007 Api Design
Zendcon 2007 Api Design
 
HTTP Caching and PHP
HTTP Caching and PHPHTTP Caching and PHP
HTTP Caching and PHP
 
Top 10 F5 iRules to migrate to a modern load balancing platform
Top 10 F5 iRules to migrate to a modern load balancing platformTop 10 F5 iRules to migrate to a modern load balancing platform
Top 10 F5 iRules to migrate to a modern load balancing platform
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed store
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed store
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed store
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed store
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed store
 
Caching invalidating with managed store
Caching invalidating with managed storeCaching invalidating with managed store
Caching invalidating with managed store
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed store
 
Caching and invalidating with managed store
Caching and invalidating with managed storeCaching and invalidating with managed store
Caching and invalidating with managed store
 

Mais de Thijs Feryn

10 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 202410 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 2024Thijs Feryn
 
Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024Thijs Feryn
 
HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023Thijs Feryn
 
Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023Thijs Feryn
 
Distributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps BarcelonaDistributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps BarcelonaThijs Feryn
 
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023Thijs Feryn
 
HTTP headers that make your website go faster
HTTP headers that make your website go fasterHTTP headers that make your website go faster
HTTP headers that make your website go fasterThijs Feryn
 
HTTP headers that will make your website go faster
HTTP headers that will make your website go fasterHTTP headers that will make your website go faster
HTTP headers that will make your website go fasterThijs Feryn
 
Distributed load testing with k6
Distributed load testing with k6Distributed load testing with k6
Distributed load testing with k6Thijs Feryn
 
HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022Thijs Feryn
 
Build your own CDN with Varnish - Confoo 2022
Build your own CDN with Varnish - Confoo 2022Build your own CDN with Varnish - Confoo 2022
Build your own CDN with Varnish - Confoo 2022Thijs Feryn
 
How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018Thijs Feryn
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Thijs Feryn
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Thijs Feryn
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Thijs Feryn
 

Mais de Thijs Feryn (15)

10 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 202410 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 2024
 
Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024
 
HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
 
Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023
 
Distributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps BarcelonaDistributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps Barcelona
 
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
 
HTTP headers that make your website go faster
HTTP headers that make your website go fasterHTTP headers that make your website go faster
HTTP headers that make your website go faster
 
HTTP headers that will make your website go faster
HTTP headers that will make your website go fasterHTTP headers that will make your website go faster
HTTP headers that will make your website go faster
 
Distributed load testing with k6
Distributed load testing with k6Distributed load testing with k6
Distributed load testing with k6
 
HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022
 
Build your own CDN with Varnish - Confoo 2022
Build your own CDN with Varnish - Confoo 2022Build your own CDN with Varnish - Confoo 2022
Build your own CDN with Varnish - Confoo 2022
 
How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018
 

Último

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Taking Laravel to the edge with HTTP caching and Varnish