phpsed/cache

Symfony response cache

Maintainers

Details

github.com/phpsed/cache

Source

Issues

Installs: 209

Dependents: 0

Suggesters: 0

Stars: 6

Watchers: 0

Forks: 1

Open Issues: 0

Type:symfony-bundle

1.5 2019-03-14 20:06 UTC

README

README IS NOT UP TO DATE FOR 2.x-dev VERSION!

Latest Stable Version Latest Unstable Version License Total Downloads

Someone made Medium article about this repository, check it out here!

Phpsed cache is annotation based controller response cache for Symfony framework. It generates route specific key from GET and POST parameters and saves it in provided cache clients.

Currently supported clients are Predis and DoctrineOrm.

phpsed_cache:
    enabled: FALSE|true
    providers:
        - snc_redis.session
        - doctrine.orm.default_entity_manager

enabled parameter by default is set to false, which means that @Cache annotation won't work without setting it to true.
providers must be either Predis or Doctrine Orm clients.
In the example above, two providers are provided:
Predis client from snc/redis-bundle => snc_redis.session and Doctrine entity manager => doctrine.orm.default_entity_manager.

If enabled parameters is set as true, at least one valid provider must be provided.

Phpsed\Cache uses Symfony\Cache ChainAdapter

When an item is not found in the first adapter but is found in the next ones, this adapter ensures that the fetched item is saved to all the adapters where it was previously missing.
use Phpsed\Cache\Annotation\Cache;
use Symfony\Component\Routing\Annotation\Route;

@Route("/{id}", name = "default", defaults = {"id" = 1}, methods = {"GET", "POST"})
@Cache(
    expires = 3600,
    attributes = {"id"}
)

By default @Cache annotation doesn't need any parameters.
Without attributes parameter, cache key for route is made from all of GET and POST parameters.
Without expires parameter, cache is saved for unlimited ttl which means that it will be valid until deleted.

If the same parameter exist in GET and POST, value of GET parameter will be used.

@Cache annotation takes two optional parameters: expires and attributes.
expires sets maximum ttl for given cache.
In the example above cache will be saved for 3600 seconds and after 3600 seconds it will be invalidated.
If the attributes parameter is set and given attribute(s) exist in GET or POST parameters, only given parameters will be used in cache key. Only valid attributes will be used in creation of key. If none of given attributes exist, key will be made without any parameters.

PS-CACHE: PS-CACHE-DISABLE

In order to invalidate and delete the cache for endpoint, you must call this endpoint with specific header. For this you need to set PS-CACHE header with PS-CACHE-DISABLE value.