SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
Symfony Cache Component
speed-up your application with
a new layer of cache
simone d’amico
software engineer @
@dymissy
sd@ideato.it
Symfony Cache Component
Agenda
How did we cache before
Symfony 3.1?
Symfony Cache Component
Symfony Simple Cache
Real Use Case
In the beginning there was…
Cache before Symfony 3.1
➔ Apc
➔ Memcache / Memcached
➔ Redis
➔ …
Doctrine Cache
doctrine_cache:
class:
DoctrineCommonCacheFilesystemCac
he
arguments:
- '/tmp/doctrine_cache/'
public: true
$cache = $this->get('doctrine_cache');
$feed = $cache->fetch('feed');
if (!$feed) {
$feed = $feedReader->load();
$cache->save('feed', $feed, 60);
}
return $feed;
…then Symfony 3.1 was released
Symfony Cache Component
Symfony Cache Component
➔ Strict implementation of PSR-6: Caching Interface
➔ Provides adapters for the most common caching
backends
➔ Compatible with every Doctrine Cache adapter
Symfony Cache Component
Symfony Cache Component
Some of adapters provided:
➔ Apcu Cache adapter
➔ Array Cache adapter
➔ Chain Cache adapter
➔ Doctrine Cache adapter
➔ Filesystem Cache adapter
➔ Memcached Cache adapter
➔ PDO & Doctrine Cache DBAL adapter
➔ Php Array Cache adapter
➔ Proxy Cache adapter
➔ Redis Cache adapter
PSR-6: Caching Interface
PSR6: Caching Interface
➔ Goal
Allow developers to create cache-aware libraries that can be
integrated into existing frameworks and systems without the need
for custom development.
➔ Data
Implementing libraries MUST support all serializable PHP data types,
including: strings, integers, floats, boolean, null, arrays, object
PSR-6: Key Concepts
PSR6: Caching Interface
➔ Pool
Collection of items in a caching system. The pool is a
logical Repository of all items it contains
➔ Item
Single key/value pair within a Pool
PSR-6: CacheItemPoolInterface
public function getItem($key);
public function getItems(array $keys = []);
public function hasItem($key);
public function clear();
public function deleteItem($key);
public function deleteItems(array $keys);
public function save(CacheItemInterface
$item);
public function
saveDeferred(CacheItemInterface $item);
public function commit();
PSR-6: CacheItemInterface
public function getKey();
public function get();
public function isHit();
public function set($value);
public function expiresAt($expiration);
public function expiresAfter($time);
Symfony Cache Component: Key Concepts
Symfony Cache Component
➔ Pool
➔ Item
➔ Adapter
SymfonyComponentCacheAdapterAdapterInterface
SymfonyComponentCacheCacheItem
SymfonyComponentCacheAdapter*Adapter
Symfony Cache Component
symfony_cache:
class:
SymfonyComponentCacheAdapter
FilesystemAdapter
arguments:
- ''
- 0
- '/tmp/cache/'
public: true
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
Symfony Cache Component
symfony_cache:
class:
SymfonyComponentCacheAdapter
FilesystemAdapter
arguments:
- ''
- 0
- '/tmp/symfony_cache/'
public: true
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
1
Symfony Cache Component
symfony_cache:
class:
SymfonyComponentCacheAdapter
FilesystemAdapter
arguments:
- ''
- 0
- '/tmp/symfony_cache/'
public: true
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
2
Symfony Cache Component
symfony_cache:
class:
SymfonyComponentCacheAdapter
FilesystemAdapter
arguments:
- ''
- 0
- '/tmp/symfony_cache/'
public: true
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
3
Symfony Cache Component
symfony_cache:
class:
SymfonyComponentCacheAdapter
FilesystemAdapter
arguments:
- ''
- 0
- '/tmp/symfony_cache/'
public: true
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
4
Symfony Cache Component
symfony_cache:
class:
SymfonyComponentCacheAdapter
FilesystemAdapter
arguments:
- ''
- 0
- '/tmp/symfony_cache/'
public: true
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
5
Symfony Cache Component
symfony_cache:
class:
SymfonyComponentCacheAdapter
FilesystemAdapter
arguments:
- ''
- 0
- '/tmp/symfony_cache/'
public: true
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
6
OK. Cool. But…
…can we do it in a simpler way?
PSR-16: Common Interface for Caching Libraries
PSR16: Caching Interface
➔ Goal
Simplify PSR-6 Interface for easier use cases
➔ Data
Implementing libraries MUST support all serializable PHP
data types, including: strings, integers, floats, boolean,
null, arrays, object
PSR-16: CacheInterface
public function get($key, $default = null);
public function set($key, $value, $ttl = null);
public function delete($key);
public function clear();
public function getMultiple($keys, $default = null);
public function setMultiple($values, $ttl = null);
public function deleteMultiple($keys);
public function has($key);
Symfony Simple Cache
Symfony Simple Cache
➔ Available from Symfony 3.3
➔ Implementation of PSR-16
Symfony Simple Cache
simple_cache:
class:
SymfonyComponentCacheSimpleF
ilesystemCache
arguments:
- ''
- 0
- '/tmp/cache/'
public: true
$cache = $this->get('simple_cache');
if ($cache->has('feed')) {
return $cache->get('feed');
}
$feed = $feedReader->load();
$cache->set('feed', $feed, 60);
return $feed;
Symfony Simple Cache
simple_cache:
class:
SymfonyComponentCacheSimpleF
ilesystemCache
arguments:
- ''
- 0
- '/tmp/cache/'
public: true
$cache = $this->get('simple_cache');
if ($cache->has('feed')) {
return $cache->get('feed');
}
$feed = $feedReader->load();
$cache->set('feed', $feed, 60);
return $feed;
1
Symfony Simple Cache
simple_cache:
class:
SymfonyComponentCacheSimpleF
ilesystemCache
arguments:
- ''
- 0
- '/tmp/cache/'
public: true
$cache = $this->get('simple_cache');
if ($cache->has('feed')) {
return $cache->get('feed');
}
$feed = $feedReader->load();
$cache->set('feed', $feed, 60);
return $feed;
2
Symfony Simple Cache
simple_cache:
class:
SymfonyComponentCacheSimpleF
ilesystemCache
arguments:
- ''
- 0
- '/tmp/cache/'
public: true
$cache = $this->get('simple_cache');
if ($cache->has('feed')) {
return $cache->get('feed');
}
$feed = $feedReader->load();
$cache->set('feed', $feed, 60);
return $feed;
3
Symfony Simple Cache
$cache = $this->get('simple_cache');
if ($cache->has('feed')) {
return $cache->get('feed');
}
$feed = $feedReader->load();
$cache->set('feed', $feed, 60);
return $feed;
$cache = $this->get('symfony_cache');
$cacheItem = $cache->getItem('feed');
if($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $feedReader->load();
$cacheItem->set($feed);
$cacheItem->expiresAfter(60);
$cache->save($cacheItem);
return $feed;
Cache Component Simple Cache
Simple Cache looks simpler than Cache Component.
Why should we use the component?
Symfony Cache Component
Symfony Cache Component
➔ Tags
➔ ChainCache Adapter
➔ ProxyCache Adapter
➔ Symfony FrameworkBundle Integration
Symfony Cache Component
Symfony Cache Component
➔ Tags
➔ ChainCache Adapter
➔ ProxyCache Adapter
➔ Symfony FrameworkBundle Integration
Real use case scenario
Domain
Real Use Case Scenario
➔ Thousands of unique visitors per day
➔ Millions of page requested per day
➔ Distributed system architecture
➔ Different layers of caching
➔ Performance matters
Domain
Real Use Case Scenario
➔ Different caching strategies:
- Slow queries with low refresh rate
- Loading data from external APIs with
low rate limit
- CPU intensive tasks
- …
Real use case scenario
cache:
default_redis_provider: "%app_cache_redis_provider%"
default_memcached_provider: "%app_cache_memcached_provider%"
pools:
app.cache.rating:
adapter: cache.adapter.redis
default_lifetime: 21600
app.cache.api:
adapter: cache.adapter.memcached
default_lifetime: 3600
app.cache.customer:
adapter: cache.app #defaults to cache.adapter.filesystem
default_lifetime: 86400
public: true
config.yml
Real use case scenario
$cache = $this->get('app.cache.customer');
$cacheItem = $cache->getItem('customer14');
if ($cacheItem->isHit()) {
return $cacheItem->get();
}
//...
Use the service in a Controller, UseCase, whatever…
Invalidate cache by tags
$cacheItem = $cache->getItem('customer15');
$product = $this->repository->find('customer15');
$cacheItem->set($product);
$cacheItem->tag(['reviews', 'customers', 'customer15']);
$cacheItem->expiresAt(new DateTimeImmutable('tomorrow'));
$cache->save($cacheItem);
//...
$cache->invalidateTags(['customer15']);
$cache->invalidateTags(['customers']);
Tag the cached content in order to invalidate easily
Clear cache pools
$ ./bin/console cache:pool:clear <cache pool or clearer 1> [...<cache
pool or clearer N>]
$ ./bin/console cache:pool:clear app.cache.customer
$ ./bin/console cache:pool:clear app.cache.custom_service
Symfony FrameworkBundle provides specific command for clear cache pools.
Questa è una diapositiva per l’inserimento di 1 immagine orizzontale con didascalia
Profiler
Profiler
Bonus
Domain
Real Use Case Scenario
➔ Different caching strategies:
- Slow queries with low refresh rate
- Loading data from external APIs with
low rate limit
- CPU intensive tasks
- …
Questa è una diapositiva per l’inserimento di 1 immagine orizzontale con didascalia
InstragramFeed
Real Use Case Scenario
(https://github.com/ideatosrl/instagram-feed)
➔ Load recent media from user
➔ PSR-6 cache decorator
➔ Easily integration with Symfony
InstragramFeed
InstragramFeed
Questa è una diapositiva per l’inserimento di 1 immagine orizzontale con didascalia
InstagramCachedFeed
public function getMedia(int $count = self::MEDIA_COUNT, $maxId = null, $minId = null): array
{
$key = sprintf('instagram_feed_%s_%s_%s', $count, $maxId, $minId);
$cacheItem = $this->cache->getItem($key);
if ($cacheItem->isHit()) {
return $cacheItem->get();
}
$feed = $this->instagramFeed->getMedia($count, $maxId, $minId);
$cacheItem->set($feed);
$cacheItem->expiresAfter($this->ttl);
$this->cache->save($cacheItem);
return $feed;
}
Thanks!
http://joind.in/talk/2c738
Simone D’Amico
sd@ideato.it
@dymissy
github.com/dymissy
?
We are hiring!
Catch me around here or drop us a line at recruitment@ideato.it
Bonus 2
Questa è una diapositiva per l’inserimento di 1 immagine orizzontale con didascalia
References
https://www.slideshare.net/andreromcke/symfony-meetup-psr6-symfony-31-cache-component
http://www.php-fig.org/psr/psr-6/
http://www.php-fig.org/psr/psr-16/
https://symfony.com/doc/current/components/cache.html
https://github.com/ideatosrl/instagram-feed
Image Credits
http://cybersport.gg/45530/refreshed-cache-in-new-csgo-patch/
https://www.brainvire.com/symfony2-framework-development-services

Contenu connexe

Tendances

LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)
LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)
LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)RaGaZoMe
 
Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門Justin Lin
 
packages and interfaces
packages and interfacespackages and interfaces
packages and interfacesmadhavi patil
 
Xhacker firebase
Xhacker firebaseXhacker firebase
Xhacker firebaseSamirGC1
 
Intellij idea tutorial
Intellij idea tutorialIntellij idea tutorial
Intellij idea tutorialHarikaReddy115
 
Java Input Output and File Handling
Java Input Output and File HandlingJava Input Output and File Handling
Java Input Output and File HandlingSunil OS
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.Mikhail Egorov
 
Form using html and java script validation
Form using html and java script validationForm using html and java script validation
Form using html and java script validationMaitree Patel
 
PHP Technical Questions
PHP Technical QuestionsPHP Technical Questions
PHP Technical QuestionsPankaj Jha
 
Life Cycle of an Agile User Story
Life Cycle of an Agile User StoryLife Cycle of an Agile User Story
Life Cycle of an Agile User StoryMichelle D'Souza
 

Tendances (20)

LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)
LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)
LAB Paso a paso: Migración GMAIL a Office 365 (AD FS 2.0 - DirSync)
 
Data Types In PHP
Data Types In PHPData Types In PHP
Data Types In PHP
 
Java I/O
Java I/OJava I/O
Java I/O
 
Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門Spring 2.0 技術手冊第二章 - Spring 入門
Spring 2.0 技術手冊第二章 - Spring 入門
 
packages and interfaces
packages and interfacespackages and interfaces
packages and interfaces
 
Xhacker firebase
Xhacker firebaseXhacker firebase
Xhacker firebase
 
Spring Core
Spring CoreSpring Core
Spring Core
 
PHP - PDO.pdf
PHP - PDO.pdfPHP - PDO.pdf
PHP - PDO.pdf
 
Intellij idea tutorial
Intellij idea tutorialIntellij idea tutorial
Intellij idea tutorial
 
android menus
android menusandroid menus
android menus
 
Java Input Output and File Handling
Java Input Output and File HandlingJava Input Output and File Handling
Java Input Output and File Handling
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Java IO
Java IOJava IO
Java IO
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
 
Form using html and java script validation
Form using html and java script validationForm using html and java script validation
Form using html and java script validation
 
File handling
File handlingFile handling
File handling
 
PHP Technical Questions
PHP Technical QuestionsPHP Technical Questions
PHP Technical Questions
 
AtoM Implementations
AtoM ImplementationsAtoM Implementations
AtoM Implementations
 
Life Cycle of an Agile User Story
Life Cycle of an Agile User StoryLife Cycle of an Agile User Story
Life Cycle of an Agile User Story
 

Similaire à Speed-up apps with Symfony Cache

Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]Raul Fraile
 
Filesystem abstractions and msg queue sergeev - symfony camp 2018
Filesystem abstractions and msg queue   sergeev - symfony camp 2018Filesystem abstractions and msg queue   sergeev - symfony camp 2018
Filesystem abstractions and msg queue sergeev - symfony camp 2018Юлия Коваленко
 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Fabien Potencier
 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Jakub Zalas
 
Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Ryan Weaver
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsMichael Peacock
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Michele Orselli
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Yury Pliashkou
 
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiGrâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiJérémy Derussé
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applicationschartjes
 
Symfony Under the Hood
Symfony Under the HoodSymfony Under the Hood
Symfony Under the HoodeZ Systems
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricksJavier Eguiluz
 
Puppet: What _not_ to do
Puppet: What _not_ to doPuppet: What _not_ to do
Puppet: What _not_ to doPuppet
 
PuppetCamp Ghent - What Not to Do with Puppet
PuppetCamp Ghent - What Not to Do with PuppetPuppetCamp Ghent - What Not to Do with Puppet
PuppetCamp Ghent - What Not to Do with PuppetWalter Heck
 

Similaire à Speed-up apps with Symfony Cache (20)

Symfony internals [english]
Symfony internals [english]Symfony internals [english]
Symfony internals [english]
 
Filesystem abstractions and msg queue sergeev - symfony camp 2018
Filesystem abstractions and msg queue   sergeev - symfony camp 2018Filesystem abstractions and msg queue   sergeev - symfony camp 2018
Filesystem abstractions and msg queue sergeev - symfony camp 2018
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
 
Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010
 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)
 
Memory Management in WordPress
Memory Management in WordPressMemory Management in WordPress
Memory Management in WordPress
 
Symfony2 revealed
Symfony2 revealedSymfony2 revealed
Symfony2 revealed
 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12
 
Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
 
Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11Capifony. Minsk PHP MeetUp #11
Capifony. Minsk PHP MeetUp #11
 
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiGrâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applications
 
Agile Memcached
Agile MemcachedAgile Memcached
Agile Memcached
 
Symfony Under the Hood
Symfony Under the HoodSymfony Under the Hood
Symfony Under the Hood
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
 
Puppet: What _not_ to do
Puppet: What _not_ to doPuppet: What _not_ to do
Puppet: What _not_ to do
 
PuppetCamp Ghent - What Not to Do with Puppet
PuppetCamp Ghent - What Not to Do with PuppetPuppetCamp Ghent - What Not to Do with Puppet
PuppetCamp Ghent - What Not to Do with Puppet
 

Plus de Simone D'Amico

Breaking free from monoliths: revolutionizing development with Livewire and S...
Breaking free from monoliths: revolutionizing development with Livewire and S...Breaking free from monoliths: revolutionizing development with Livewire and S...
Breaking free from monoliths: revolutionizing development with Livewire and S...Simone D'Amico
 
Panther loves Symfony apps
Panther loves Symfony appsPanther loves Symfony apps
Panther loves Symfony appsSimone D'Amico
 
Rory’s Story Cubes Retrospective
Rory’s Story Cubes RetrospectiveRory’s Story Cubes Retrospective
Rory’s Story Cubes RetrospectiveSimone D'Amico
 
E-commerce con SF: dal case study alla realtà
E-commerce con SF: dal case study alla realtàE-commerce con SF: dal case study alla realtà
E-commerce con SF: dal case study alla realtàSimone D'Amico
 
Introduction to WordPress REST API
Introduction to WordPress REST APIIntroduction to WordPress REST API
Introduction to WordPress REST APISimone D'Amico
 
Manage custom options pages in Wordpress
Manage custom options pages in WordpressManage custom options pages in Wordpress
Manage custom options pages in WordpressSimone D'Amico
 

Plus de Simone D'Amico (6)

Breaking free from monoliths: revolutionizing development with Livewire and S...
Breaking free from monoliths: revolutionizing development with Livewire and S...Breaking free from monoliths: revolutionizing development with Livewire and S...
Breaking free from monoliths: revolutionizing development with Livewire and S...
 
Panther loves Symfony apps
Panther loves Symfony appsPanther loves Symfony apps
Panther loves Symfony apps
 
Rory’s Story Cubes Retrospective
Rory’s Story Cubes RetrospectiveRory’s Story Cubes Retrospective
Rory’s Story Cubes Retrospective
 
E-commerce con SF: dal case study alla realtà
E-commerce con SF: dal case study alla realtàE-commerce con SF: dal case study alla realtà
E-commerce con SF: dal case study alla realtà
 
Introduction to WordPress REST API
Introduction to WordPress REST APIIntroduction to WordPress REST API
Introduction to WordPress REST API
 
Manage custom options pages in Wordpress
Manage custom options pages in WordpressManage custom options pages in Wordpress
Manage custom options pages in Wordpress
 

Dernier

Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...aditipandeya
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Sheetaleventcompany
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of indiaimessage0108
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607dollysharma2066
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Roomgirls4nights
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 

Dernier (20)

Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of india
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 

Speed-up apps with Symfony Cache