phpsed / cache
Symfony response cache
Installs: 323
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.1.3
- doctrine/annotations: ~1.6
- doctrine/dbal: ~2.6
- doctrine/orm: ~2.6
- predis/predis: ~1.1
- psr/cache: ^1
- symfony/cache: ~3.2|~4.0
- symfony/config: ~3.2|~4.0
- symfony/dependency-injection: ~3.2|~4.0
- symfony/event-dispatcher: ~3.2|~4.0
- symfony/http-foundation: ~3.2|~4.0
- symfony/http-kernel: ~3.2|~4.0
Suggests
- snc/redis-bundle: For easier Predis client configuration
This package is auto-updated.
Last update: 2020-11-14 16:44:07 UTC
README
I don't have time to work on this anymore, so my friend is taking over: vairogs/cache
README IS NOT UP TO DATE FOR 2.x-dev VERSION!
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.