SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Red Hat Global File System (GFS)
Red Hat Global File System (GFS)Red Hat Global File System (GFS)
Red Hat Global File System (GFS)
Schubert Zhang
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
sprdd
 
ClassificaçãO E TipificaçãO De CarcaçAsaula
ClassificaçãO E TipificaçãO De CarcaçAsaulaClassificaçãO E TipificaçãO De CarcaçAsaula
ClassificaçãO E TipificaçãO De CarcaçAsaula
Samira Mantilla
 
130514 palestra-roberto
130514 palestra-roberto130514 palestra-roberto
130514 palestra-roberto
AgroTalento
 

Mais procurados (20)

OffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenOffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with Xen
 
Red Hat Global File System (GFS)
Red Hat Global File System (GFS)Red Hat Global File System (GFS)
Red Hat Global File System (GFS)
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
Key range locking
Key range lockingKey range locking
Key range locking
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
The basics of fluentd
The basics of fluentdThe basics of fluentd
The basics of fluentd
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
 
ClassificaçãO E TipificaçãO De CarcaçAsaula
ClassificaçãO E TipificaçãO De CarcaçAsaulaClassificaçãO E TipificaçãO De CarcaçAsaula
ClassificaçãO E TipificaçãO De CarcaçAsaula
 
Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0
 
Capturing NIC and Kernel TX and RX Timestamps for Packets in Go
Capturing NIC and Kernel TX and RX Timestamps for Packets in GoCapturing NIC and Kernel TX and RX Timestamps for Packets in Go
Capturing NIC and Kernel TX and RX Timestamps for Packets in Go
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
 
[IBM 김상훈] NAS_IBM Spectrum NAS 상세 설명
[IBM 김상훈] NAS_IBM Spectrum NAS 상세 설명[IBM 김상훈] NAS_IBM Spectrum NAS 상세 설명
[IBM 김상훈] NAS_IBM Spectrum NAS 상세 설명
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & Database
 
Physical Memory Management.pdf
Physical Memory Management.pdfPhysical Memory Management.pdf
Physical Memory Management.pdf
 
eBPF - Observability In Deep
eBPF - Observability In DeepeBPF - Observability In Deep
eBPF - Observability In Deep
 
Logging kernel oops and panic
Logging kernel oops and panicLogging kernel oops and panic
Logging kernel oops and panic
 
Btrfs and Snapper - The Next Steps from Pure Filesystem Features to Integrati...
Btrfs and Snapper - The Next Steps from Pure Filesystem Features to Integrati...Btrfs and Snapper - The Next Steps from Pure Filesystem Features to Integrati...
Btrfs and Snapper - The Next Steps from Pure Filesystem Features to Integrati...
 
MySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete TutorialMySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete Tutorial
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
130514 palestra-roberto
130514 palestra-roberto130514 palestra-roberto
130514 palestra-roberto
 

Semelhante a Symfony Cache Component: speed up your application with a new layer of cache

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
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
Michael Peacock
 

Semelhante a Symfony Cache Component: speed up your application with a new layer of 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
 

Mais de Simone D'Amico

Mais 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
 

Último

Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
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
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 
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
ellan12
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
imonikaupta
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Chandigarh Call girls 9053900678 Call girls in Chandigarh
 

Último (20)

Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
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...
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
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
 
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 Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
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
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
 

Symfony Cache Component: speed up your application with a new layer of cache