Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Jan 8, 2024. It is now read-only.

The symfony 3/Flex bundle for PhpFastCache integrating a phpfastcache service, a twig cache tag and a powerfull cache profiler integrated to the symfony profile

License

Notifications You must be signed in to change notification settings

PHPSocialNetwork/phpfastcache-bundle

Repository files navigation

Code Climate Scrutinizer Code Quality Build Status Latest Stable Version Total Downloads License

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/"

πŸš€ 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 and true will be respectively converted to boolean.
  • 1337 and 1337.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 detection
  • a 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 !

About

The symfony 3/Flex bundle for PhpFastCache integrating a phpfastcache service, a twig cache tag and a powerfull cache profiler integrated to the symfony profile

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /