@@ -47,13 +47,42 @@ There are two pools that are always enabled by default. They are ``cache.app`` a
47
47
and validation. The ``cache.app `` can be used in your code. You can configure which
48
48
adapter (template) they use by using the ``app `` and ``system `` key like:
49
49
50
- .. code-block :: yaml
51
-
52
- # config/packages/cache.yaml
53
- framework :
54
- cache :
55
- app : cache.adapter.filesystem
56
- system : cache.adapter.system
50
+ .. configuration-block ::
51
+
52
+ .. code-block :: yaml
53
+
54
+ # config/packages/cache.yaml
55
+ framework :
56
+ cache :
57
+ app : cache.adapter.filesystem
58
+ system : cache.adapter.system
59
+
60
+ .. code-block :: xml
61
+
62
+ <!-- config/packages/cache.xml -->
63
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
64
+ <container xmlns =" http://symfony.com/schema/dic/services"
65
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
66
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
67
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
68
+ https://symfony.com/schema/dic/services/services-1.0.xsd" >
69
+
70
+ <framework : config >
71
+ <framework : cache app =" cache.adapter.filesystem"
72
+ system =" cache.adapter.system"
73
+ />
74
+ </framework : config >
75
+ </container >
76
+
77
+ .. code-block :: php
78
+
79
+ // config/packages/cache.php
80
+ $container->loadFromExtension('framework', [
81
+ 'cache' => [
82
+ 'app' => 'cache.adapter.filesystem',
83
+ 'system' => 'cache.adapter.system',
84
+ ],
85
+ ]);
57
86
58
87
The Cache component comes with a series of adapters already created:
59
88
@@ -77,43 +106,135 @@ The Cache component comes with a series of adapters already created:
77
106
Some of these adapters could be configured via shortcuts. Using these shortcuts
78
107
will create pool with service id of ``cache.[type] ``
79
108
80
- .. code-block :: yaml
81
-
82
- # config/packages/cache.yaml
83
- framework :
84
- cache :
85
- directory : ' %kernel.cache_dir%/pools' # Only used with cache.adapter.filesystem
86
-
87
- # service: cache.doctrine
88
- default_doctrine_provider : ' app.doctrine_cache'
89
- # service: cache.psr6
90
- default_psr6_provider : ' app.my_psr6_service'
91
- # service: cache.redis
92
- default_redis_provider : ' redis://localhost'
93
- # service: cache.memcached
94
- default_memcached_provider : ' memcached://localhost'
95
- # service: cache.pdo
96
- default_pdo_provider : ' doctrine.dbal.default_connection'
109
+ .. configuration-block ::
110
+
111
+ .. code-block :: yaml
112
+
113
+ # config/packages/cache.yaml
114
+ framework :
115
+ cache :
116
+ directory : ' %kernel.cache_dir%/pools' # Only used with cache.adapter.filesystem
117
+
118
+ # service: cache.doctrine
119
+ default_doctrine_provider : ' app.doctrine_cache'
120
+ # service: cache.psr6
121
+ default_psr6_provider : ' app.my_psr6_service'
122
+ # service: cache.redis
123
+ default_redis_provider : ' redis://localhost'
124
+ # service: cache.memcached
125
+ default_memcached_provider : ' memcached://localhost'
126
+ # service: cache.pdo
127
+ default_pdo_provider : ' doctrine.dbal.default_connection'
128
+
129
+ .. code-block :: xml
130
+
131
+ <!-- config/packages/cache.xml -->
132
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
133
+ <container xmlns =" http://symfony.com/schema/dic/services"
134
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
135
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
136
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
137
+ https://symfony.com/schema/dic/services/services-1.0.xsd" >
138
+
139
+ <framework : config >
140
+ <framework : cache directory =" %kernel.cache_dir%/pools"
141
+ <!-- Service: cache.doctrine -->
142
+ default_doctrine_provider="app.doctrine_cache"
143
+ <!-- Service: cache.psr6 -->
144
+ default_psr6_provider="app.my_psr6_service"
145
+ <!-- Service: cache.redis -->
146
+ default_redis_provider="redis://localhost"
147
+ <!-- Service: cache.memcached -->
148
+ default_memcached_provider="memcached://localhost"
149
+ <!-- Service: cache.pdo -->
150
+ default_pdo_provider="doctrine.dbal.default_connection"
151
+ />
152
+ </framework : config >
153
+ </container >
154
+
155
+ .. code-block :: php
156
+
157
+ // config/packages/cache.php
158
+ $container->loadFromExtension('framework', [
159
+ 'cache' => [
160
+ // Only used with cache.adapter.filesystem
161
+ 'directory' => '%kernel.cache_dir%/pools',
162
+
163
+ // Service: cache.doctrine
164
+ 'default_doctrine_provider' => 'app.doctrine_cache',
165
+ // Service: cache.psr6
166
+ 'default_psr6_provider' => 'app.my_psr6_service',
167
+ // Service: cache.redis
168
+ 'default_redis_provider' => 'redis://localhost',
169
+ // Service: cache.memcached
170
+ 'default_memcached_provider' => 'memcached://localhost',
171
+ // Service: cache.pdo
172
+ 'default_pdo_provider' => 'doctrine.dbal.default_connection',
173
+ ],
174
+ ]);
97
175
98
176
Creating Custom Pools
99
177
---------------------
100
178
101
179
You can also create more customized pools. All you need is an adapter:
102
180
103
- .. code-block :: yaml
104
-
105
- # config/packages/cache.yaml
106
- framework :
107
- cache :
108
- default_memcached_provider : ' memcached://localhost'
109
- pools :
110
- my_cache_pool :
111
- adapter : cache.adapter.array
112
- cache.acme :
113
- adapter : cache.adapter.memcached
114
- cache.foobar :
115
- adapter : cache.adapter.memcached
116
- provider : ' memcached://user:password@example.com'
181
+ .. configuration-block ::
182
+
183
+ .. code-block :: yaml
184
+
185
+ # config/packages/cache.yaml
186
+ framework :
187
+ cache :
188
+ default_memcached_provider : ' memcached://localhost'
189
+ pools :
190
+ my_cache_pool :
191
+ adapter : cache.adapter.array
192
+ cache.acme :
193
+ adapter : cache.adapter.memcached
194
+ cache.foobar :
195
+ adapter : cache.adapter.memcached
196
+ provider : ' memcached://user:password@example.com'
197
+
198
+ .. code-block :: xml
199
+
200
+ <!-- config/packages/cache.xml -->
201
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
202
+ <container xmlns =" http://symfony.com/schema/dic/services"
203
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
204
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
205
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
206
+ https://symfony.com/schema/dic/services/services-1.0.xsd" >
207
+
208
+ <framework : config >
209
+ <framework : cache default_memcached_provider =" memcached://localhost" >
210
+ <framework : pool name =" my_cache_pool" adapter =" cache.adapter.array" />
211
+ <framework : pool name =" cache.acme" adapter =" cache.adapter.memcached" />
212
+ <framework : pool name =" cache.foobar" adapter =" cache.adapter.memcached" provider =" memcached://user:password@example.com" />
213
+ </framework : cache >
214
+ </framework : config >
215
+ </container >
216
+
217
+ .. code-block :: php
218
+
219
+ // config/packages/cache.php
220
+ $container->loadFromExtension('framework', [
221
+ 'cache' => [
222
+ 'default_memcached_provider' => 'memcached://localhost',
223
+ 'pools' => [
224
+ 'my_cache_pool' => [
225
+ 'adapter' => 'cache.adapter.array',
226
+ ],
227
+ 'cache.acme' => [
228
+ 'adapter' => 'cache.adapter.memcached',
229
+ ],
230
+ 'cache.foobar' => [
231
+ 'adapter' => 'cache.adapter.memcached',
232
+ 'provider' => 'memcached://user:password@example.com',
233
+ ],
234
+ ],
235
+ ],
236
+ ]);
237
+
117
238
118
239
The configuration above will create 3 services: ``my_cache_pool ``, ``cache.acme ``
119
240
and ``cache.foobar ``. The ``my_cache_pool `` pool is using the ArrayAdapter
@@ -123,21 +244,66 @@ is using the Memcached server at example.com.
123
244
124
245
For advanced configurations it could sometimes be useful to use a pool as an adapter.
125
246
126
- .. code-block :: yaml
127
-
128
- # config/packages/cache.yaml
129
- framework :
130
- cache :
131
- pools :
132
- my_cache_pool :
133
- adapter : cache.adapter.memcached
134
- provider : ' memcached://user:password@example.com'
135
- cache.short_cache :
136
- adapter : my_cache_pool
137
- default_lifetime : 60
138
- cache.long_cache :
139
- adapter : my_cache_pool
140
- default_lifetime : 604800
247
+ .. configuration-block ::
248
+
249
+ .. code-block :: yaml
250
+
251
+ # config/packages/cache.yaml
252
+ framework :
253
+ cache :
254
+ pools :
255
+ my_cache_pool :
256
+ adapter : cache.adapter.memcached
257
+ provider : ' memcached://user:password@example.com'
258
+ cache.short_cache :
259
+ adapter : my_cache_pool
260
+ default_lifetime : 60
261
+ cache.long_cache :
262
+ adapter : my_cache_pool
263
+ default_lifetime : 604800
264
+
265
+ .. code-block :: xml
266
+
267
+ <!-- config/packages/cache.xml -->
268
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
269
+ <container xmlns =" http://symfony.com/schema/dic/services"
270
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
271
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
272
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
273
+ https://symfony.com/schema/dic/services/services-1.0.xsd" >
274
+
275
+ <framework : config >
276
+ <framework : cache >
277
+ <framework : pool name =" my_cache_pool" adapter =" cache.adapter.memcached" provider =" memcached://user:password@example.com" />
278
+ <framework : pool name =" cache.short_cache" adapter =" my_cache_pool" default_lifetime =" 604800" />
279
+ <framework : pool name =" cache.long_cache" adapter =" my_cache_pool" default_lifetime =" 604800" />
280
+ </framework : cache >
281
+ </framework : config >
282
+ </container >
283
+
284
+ .. code-block :: php
285
+
286
+ // config/packages/cache.php
287
+ $container->loadFromExtension('framework', [
288
+ 'cache' => [
289
+ 'pools' => [
290
+ 'my_cache_pool' => [
291
+ 'adapter' => 'cache.adapter.memcached',
292
+ 'provider' => 'memcached://user:password@example.com',
293
+ ],
294
+ 'cache.short_cache' => [
295
+ 'adapter' => 'cache.adapter.memcached',
296
+ 'default_lifetime' => 60,
297
+ ],
298
+ 'cache.long_cache' => [
299
+ 'adapter' => 'cache.adapter.memcached',
300
+ 'default_lifetime' => 604800,
301
+ ],
302
+ ],
303
+ ],
304
+ ]);
305
+
306
+
141
307
142
308
Creating a Cache Chain
143
309
----------------------
@@ -148,25 +314,80 @@ To get the best of both worlds you may use a chain of adapters. The idea is to
148
314
first look at the quick adapter and then move on to slower adapters. In the worst
149
315
case the value needs to be recalculated.
150
316
151
- .. code-block :: yaml
152
-
153
- # config/services.yaml
154
- services :
155
- app.my_cache_chain_adapter :
156
- class : Symfony\Component\Cache\Adapter\ChainAdapter
157
- arguments :
158
- - ['cache.adapter.array', 'cache.my_redis', 'cache.adapter.file']
159
- - 31536000 # One year
160
-
161
- # config/packages/cache.yaml
162
- framework :
163
- cache :
164
- pools :
165
- my_cache_pool :
166
- adapter : app.my_cache_chain_adapter
167
- cache.my_redis :
168
- adapter : cache.adapter.redis
169
- provider : ' redis://user:password@example.com'
317
+ .. configuration-block ::
318
+
319
+ .. code-block :: yaml
320
+
321
+ # config/packages/cache.yaml
322
+ framework :
323
+ cache :
324
+ pools :
325
+ my_cache_pool :
326
+ adapter : app.my_cache_chain_adapter
327
+ cache.my_redis :
328
+ adapter : cache.adapter.redis
329
+ provider : ' redis://user:password@example.com'
330
+
331
+ services :
332
+ app.my_cache_chain_adapter :
333
+ class : Symfony\Component\Cache\Adapter\ChainAdapter
334
+ arguments :
335
+ - ['cache.adapter.array', 'cache.my_redis', 'cache.adapter.file']
336
+ - 31536000 # One year
337
+
338
+ .. code-block :: xml
339
+
340
+ <!-- config/packages/cache.xml -->
341
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
342
+ <container xmlns =" http://symfony.com/schema/dic/services"
343
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
344
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
345
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
346
+ https://symfony.com/schema/dic/services/services-1.0.xsd" >
347
+
348
+ <framework : config >
349
+ <framework : cache default_memcached_provider =" memcached://localhost" >
350
+ <framework : pool name =" my_cache_pool" adapter =" app.my_cache_chain_adapter" />
351
+ <framework : pool name =" cache.my_redis" adapter =" cache.adapter.redis" provider =" redis://user:password@example.com" />
352
+ </framework : cache >
353
+ </framework : config >
354
+
355
+ <services >
356
+ <service id =" app.my_cache_chain_adapter" class =" Symfony\Component\Cache\Adapter\ChainAdapter" >
357
+ <argument type =" collection" >
358
+ <argument type =" service" value =" cache.adapter.array" />
359
+ <argument type =" service" value =" cache.my_redis" />
360
+ <argument type =" service" value =" cache.adapter.file" />
361
+ </argument >
362
+ <argument >31536000</argument >
363
+ </service >
364
+ </services >
365
+ </container >
366
+
367
+ .. code-block :: php
368
+
369
+ // config/packages/cache.php
370
+ $container->loadFromExtension('framework', [
371
+ 'cache' => [
372
+ 'pools' => [
373
+ 'my_cache_pool' => [
374
+ 'adapter' => 'app.my_cache_chain_adapter',
375
+ ],
376
+ 'cache.my_redis' => [
377
+ 'adapter' => 'cache.adapter.redis',
378
+ 'provider' => 'redis://user:password@example.com',
379
+ ],
380
+ ],
381
+ ],
382
+ ]);
383
+
384
+ $container->getDefinition('app.my_cache_chain_adapter', \Symfony\Component\Cache\Adapter\ChainAdapter::class)
385
+ ->addArgument([
386
+ new Reference('cache.adapter.array'),
387
+ new Reference('cache.my_redis'),
388
+ new Reference('cache.adapter.file'),
389
+ ])
390
+ ->addArgument(31536000);
170
391
171
392
.. note ::
172
393
0 commit comments