|  | 
| 52 | 52 |     Redis and Memcached are example of such adapters. If a DSN is used as the | 
| 53 | 53 |     provider then a service is automatically created. | 
| 54 | 54 | 
 | 
| 55 |  | -There are two pools that are always enabled by default. They are ``cache.app`` and | 
| 56 |  | -``cache.system``. The system cache is used for things like annotations, serializer, | 
| 57 |  | -and validation. The ``cache.app`` can be used in your code. You can configure which | 
| 58 |  | -adapter (template) they use by using the ``app`` and ``system`` key like: | 
| 59 |  | - | 
| 60 |  | -.. configuration-block:: | 
| 61 |  | - | 
| 62 |  | -    .. code-block:: yaml | 
| 63 |  | -
 | 
| 64 |  | -        # config/packages/cache.yaml | 
| 65 |  | -        framework: | 
| 66 |  | -            cache: | 
| 67 |  | -                app: cache.adapter.filesystem | 
| 68 |  | -                system: cache.adapter.system | 
| 69 |  | -
 | 
| 70 |  | -    .. code-block:: xml | 
| 71 |  | -
 | 
| 72 |  | -        <!-- config/packages/cache.xml --> | 
| 73 |  | -        <?xml version="1.0" encoding="UTF-8" ?> | 
| 74 |  | -        <container xmlns="http://symfony.com/schema/dic/services" | 
| 75 |  | -            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 
| 76 |  | -            xmlns:framework="http://symfony.com/schema/dic/symfony" | 
| 77 |  | -            xsi:schemaLocation="http://symfony.com/schema/dic/services | 
| 78 |  | -                https://symfony.com/schema/dic/services/services-1.0.xsd | 
| 79 |  | -                http://symfony.com/schema/dic/symfony | 
| 80 |  | -                https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"> | 
| 81 |  | -
 | 
| 82 |  | -            <framework:config> | 
| 83 |  | -                <framework:cache app="cache.adapter.filesystem" | 
| 84 |  | -                    system="cache.adapter.system" | 
| 85 |  | -                /> | 
| 86 |  | -            </framework:config> | 
| 87 |  | -        </container> | 
| 88 |  | -
 | 
| 89 |  | -    .. code-block:: php | 
| 90 |  | -
 | 
| 91 |  | -        // config/packages/cache.php | 
| 92 |  | -        $container->loadFromExtension('framework', [ | 
| 93 |  | -            'cache' => [ | 
| 94 |  | -                'app' => 'cache.adapter.filesystem', | 
| 95 |  | -                'system' => 'cache.adapter.system', | 
| 96 |  | -            ], | 
| 97 |  | -        ]); | 
| 98 |  | -
 | 
| 99 | 55 | The Cache component comes with a series of adapters pre-configured: | 
| 100 | 56 | 
 | 
| 101 | 57 | * :doc:`cache.adapter.apcu </components/cache/adapters/apcu_adapter>` | 
| @@ -182,6 +138,81 @@ will create pools with service IDs that follow the pattern ``cache.[type]``. | 
| 182 | 138 |             ], | 
| 183 | 139 |         ]); | 
| 184 | 140 | 
 | 
|  | 141 | +System Cache and Application Cache | 
|  | 142 | +---------------------------------- | 
|  | 143 | + | 
|  | 144 | +There are two pools that are always enabled by default. They are | 
|  | 145 | +``cache.system`` and ``cache.app``. | 
|  | 146 | + | 
|  | 147 | +The system cache ``cache.system`` is mainly used by Symfony components for | 
|  | 148 | +things like annotations, serializer, and validation. For advanced use-cases it | 
|  | 149 | +is also available for application code under the following constraints: | 
|  | 150 | + | 
|  | 151 | +- Entries are derived from source code and can be generated during cache warmup | 
|  | 152 | +  by a CacheWarmer | 
|  | 153 | +- Cached content only needs to change if the source code also changes (i.e. | 
|  | 154 | +  only on deployment on non-development machines); it should be regarded as | 
|  | 155 | +  read-only after deployment | 
|  | 156 | + | 
|  | 157 | +By default the system cache uses the special ``cache.adapter.system`` adapter | 
|  | 158 | +which writes to the file system and chains the APCu adapter if APCu is | 
|  | 159 | +available. In most cases the default adapter should be the right choice for | 
|  | 160 | +your application. | 
|  | 161 | + | 
|  | 162 | +The application cache ``cache.app`` can be used as a multi-purpose data cache | 
|  | 163 | +in your application and bundle code. In general, data in this pool does not | 
|  | 164 | +need to be flushed on deployment. It defaults to ``cache.adapter.filesystem`` | 
|  | 165 | +but it is recommended to configure another adapter like Redis if available, so | 
|  | 166 | +that data both "survives" deployments and is available on multiple instances in | 
|  | 167 | +a multi-server setup. | 
|  | 168 | +Custom pools (see section below) will default to ``cache.app`` as adapter if | 
|  | 169 | +not specified explicitly. | 
|  | 170 | +When using autowiring in your service definitions, ``cache.app`` will by | 
|  | 171 | +default be injected if a service argument declares ``CacheItemPoolInterface``, | 
|  | 172 | +``AdapterInterface``, or ``CacheInterface`` as its type. | 
|  | 173 | + | 
|  | 174 | +You can configure which adapter (template) these predefined pools use by using | 
|  | 175 | +the ``app`` and ``system`` key like: | 
|  | 176 | + | 
|  | 177 | +.. configuration-block:: | 
|  | 178 | + | 
|  | 179 | +    .. code-block:: yaml | 
|  | 180 | +
 | 
|  | 181 | +        # config/packages/cache.yaml | 
|  | 182 | +        framework: | 
|  | 183 | +            cache: | 
|  | 184 | +                app: cache.adapter.filesystem | 
|  | 185 | +                system: cache.adapter.system | 
|  | 186 | +
 | 
|  | 187 | +    .. code-block:: xml | 
|  | 188 | +
 | 
|  | 189 | +        <!-- config/packages/cache.xml --> | 
|  | 190 | +        <?xml version="1.0" encoding="UTF-8" ?> | 
|  | 191 | +        <container xmlns="http://symfony.com/schema/dic/services" | 
|  | 192 | +            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 
|  | 193 | +            xmlns:framework="http://symfony.com/schema/dic/symfony" | 
|  | 194 | +            xsi:schemaLocation="http://symfony.com/schema/dic/services | 
|  | 195 | +                https://symfony.com/schema/dic/services/services-1.0.xsd | 
|  | 196 | +                http://symfony.com/schema/dic/symfony | 
|  | 197 | +                https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"> | 
|  | 198 | +
 | 
|  | 199 | +            <framework:config> | 
|  | 200 | +                <framework:cache app="cache.adapter.filesystem" | 
|  | 201 | +                    system="cache.adapter.system" | 
|  | 202 | +                /> | 
|  | 203 | +            </framework:config> | 
|  | 204 | +        </container> | 
|  | 205 | +
 | 
|  | 206 | +    .. code-block:: php | 
|  | 207 | +
 | 
|  | 208 | +        // config/packages/cache.php | 
|  | 209 | +        $container->loadFromExtension('framework', [ | 
|  | 210 | +            'cache' => [ | 
|  | 211 | +                'app' => 'cache.adapter.filesystem', | 
|  | 212 | +                'system' => 'cache.adapter.system', | 
|  | 213 | +            ], | 
|  | 214 | +        ]); | 
|  | 215 | +
 | 
| 185 | 216 | Creating Custom (Namespaced) Pools | 
| 186 | 217 | ---------------------------------- | 
| 187 | 218 | 
 | 
|  | 
0 commit comments