effiana / phpfastcache-bundle
Phpfastcache Bundle for Symfony integration
Installs: 52
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 2
Type:symfony-bundle
Requires
- php: ^7.2
- ext-json: *
- ext-mbstring: *
- phpfastcache/phpfastcache: ^7.0
- symfony/console: ^3.4 | ^4.0 || ^5.0
- symfony/dependency-injection: ^3.4 | ^4.0 | ^5.0
- symfony/framework-bundle: ^3.4 | ^4.0 | ^5.0
- symfony/http-foundation: ^3.4 | ^4.0 | ^5.0
- symfony/yaml: ^3.4 | ^4.0 | ^5.0
Requires (Dev)
- phpunit/phpunit: ^6.2 | ^7.1
- predis/predis: ^1.0
- symfony/browser-kit: ^3.4 | ^4.0 | ^5.0
- symfony/console: ^3.4 | ^4.0 | ^5.0
- symfony/phpunit-bridge: ^3.4 | ^4.0 | ^5.0
- symfony/profiler-pack: ^1.0
- symfony/twig-bundle: ^3.4 | ^4.0 | ^5.0
Suggests
- symfony/web-profiler-bundle: To use the data collector.
This package is auto-updated.
Last update: 2024-10-24 21:43:49 UTC
README
Symfony Flex PhpFastCache Bundle
⚠️ Please note that the V3 is a major (BC breaking) update of the PhpFastCache Bundle !
As of the V3 the bundle is absolutely not compatible with previous versions.
To ensure you the smoothest migration possible, please check the migration guide in the Resources/Docs directory.
One of the biggest change is the Phpfastcache's dependency which is not set to the v7 which it not backward compatible at all.
👍 Step 1: Include phpFastCache Bundle in your project with composer:
composer require phpfastcache/phpfastcache-bundle
🚧 Step 2: Setup your config/packages/phpfastcache.yaml
to configure your cache(s) instance(s)
# PhpFastCache configuration phpfastcache: twig_driver: "filecache" # This option must be a valid declared driver, in our example: "filecache" twig_block_debug: false # This option will wrap CACHE/ENDCACHE blocks with block debug as HTML comment drivers: filecache: type: Files parameters: path: "%kernel.cache_dir%/phpfastcache/"
- This step can be skipped using Symfony recipes.
🚀 Step 3: Accelerate your app by making use of PhpFastCache service
Caching data in your controller:
public function indexAction(Request $request, Phpfastcache $phpfastcache) { $cache = $phpfastcache->get('filecache'); $item = $cache->getItem('myAppData'); if (!$item->isHit() || $item->get() === null) { $item->set('Wy app has now superpowers !!')->expiresAfter(3600);//1 hour $cache->save($item); } // replace this example code with whatever you need return $this->render('default/index.html.twig', [ 'myAppData' => $item->get(), 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..'), ]); }
Or in your template:
<div> {# * 'myrandom6' Is your cache key identifier, must be unique * 300 Is the time to live (TTL) before the cache expires and get regenerated #} {% cache 'myrandom6' 300 %} <textarea> <!-- Some heavy stuff like Doctrine Lazy Entities --> {% for i in 1..1000 %}{{ random() }}{% endfor %} </textarea> {% endcache %} </div>
💻 CLI command interactions
As of the V3, some command-line tools were introduced, mostly for CRUD-like operations.
GET operation
php bin/console phpfastcache:get filecache cacheKey
This will display the content of a cache item if it eventually exists.
SET operation
php bin/console phpfastcache:get filecache cacheKey '{"a": 14}' 300 -a 1
This will set the content of a cache item.
The TTL (300), in seconds, is optional and take the default value filled in your configuration file.
The auto-type-cast
option "-a" (enabled by default) will let allows you to automatically type cast your variable:
false
andtrue
will be respectively converted to boolean.1337
and1337.666
will be respectively be converted to integer or float.null
will be converted to null.{"a": 14}
will be converted to an associative array using a JSON detectiona regular string
will remains unchanged and stays a string
You can obviously disable this behavior by turning off the auto-type-cast
option: -a 0
DELETE operation
php bin/console phpfastcache:del filecache cacheKey
This will delete the specified cache item.
CLEAR operation
php bin/console phpfastcache:clear filecache
# OR to clear every caches:
php bin/console phpfastcache:clear
This will clear a single cache instance if specified or all the configured cache instances otherwise.
💡 Introducing Cacheable Responses (V3 only)
As of the V3 there's a new, easier and cleaner way to setup HTTP cache to decrease your server bandwidth along with your CPU load: Cacheable Responses. And it's pretty easy to implement:
/** * @Route("/cached", name="cached") */ public function cachedAction(Phpfastcache $phpfastcache, Request $request): Response { return (new CacheableResponse($phpfastcache->get('filecache'), $request))->getResponse('cache_key', 3600, function () { return new Response('Random bytes: ' . \random_bytes(255)); }); }
CacheableResponse
is provided by \Phpfastcache\Bundle\Response\CacheableResponse
.
This class will handle responses headers (cache-control, etag, etc...) and http status (304 Not modified).
💥 phpFastCache Bundle support
Found an issue or had an idea ? Come here here and let us know !