.. index::
    single: Installation
    single: Configuration
    single: APC
    single: Routing

Installation
============

To begin, add the dependent bundles to the `vendor/bundles` directory. Add the following lines to the file `deps`:

.. code-block:: bash

    php composer.phar require sonata-project/cache-bundle

Now, add the new Bundle to the kernel:

.. code-block:: php

    <?php

    // app/AppKernel.php

    public function registerbundles()
    {
        return array(
            // Vendor specifics bundles
            new Sonata\CacheBundle\SonataCacheBundle(),
        );
    }

Update the ``app/autoload.php`` to add new namespaces:

.. code-block:: php

    <?php

    $loader->add('Sonata', __DIR__);


Configuration
-------------

To use the ``CacheBundle``, add the following lines to your application configuration file:

.. code-block:: yaml

    # app/config/config.yml
    sonata_cache:
        caches:
            esi:
                token: an unique security key # a random one is generated by default
                servers:
                    - varnishadm -T 127.0.0.1:2000 {{ COMMAND }} "{{ EXPRESSION }}"

            ssi:
                token: an unique security key # a random one is generated by default

            mongo:
                database:   cache
                collection: cache
                servers:
                    - {host: 127.0.0.1, port: 27017, user: username, password: pASS'}
                    - {host: 127.0.0.2}

            memcached:
                prefix: test     # prefix to ensure there is no clash between instances
                servers:
                    - {host: 127.0.0.1, port: 11211, weight: 0}

            predis:
                servers:
                    - {host: 127.0.0.1, port: 6379, database: 42}

            apc:
                token:  s3cur3   # token used to clear the related cache
                prefix: test     # prefix to ensure there is no clash between instances
                servers:
                    - { domain: kooqit.local, ip: 127.0.0.1, port: 80}

            symfony:
                token: s3cur3 # token used to clear the related cache
                php_cache_enabled: true # Optional (default: false), clear APC or PHP OPcache
                types: [mytype1, mycustomtype2] # Optional, you can restrict allowed cache types
                servers:
                    - { domain: kooqit.local, ip: 127.0.0.1, port: 80}

For APC and Symfony caches, you can specify a basic parameter for servers definition (useful to clear cache for staging area behind this kind of protection)

.. code-block:: yaml

    apc:
        token:  s3cur3   # token used to clear the related cache
        prefix: test     # prefix to ensure there is no clash between instances
        servers:
            - { domain: kooqit.local, ip: 127.0.0.1, port: 80, basic: 'user:login' }

At the end of your routing file, add the following lines:

.. code-block:: yaml

    # app/config/routing.yml
    sonata_cache_cache:
        resource: '@SonataCacheBundle/Resources/config/routing/cache.xml'
        prefix: /
