perturbatio / cachetags
Provides a partial caching mechanism for use with Laravel's Blade templating language or in normal PHP with the helpers
Installs: 15 535
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- illuminate/cache: ^6|^7|^8
- illuminate/support: ^6|^7|^8
Requires (Dev)
- illuminate/container: ^6|^7|^8
- illuminate/filesystem: ^6|^7|^8
- orchestra/testbench: ^6.3
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-10-29 02:52:47 UTC
README
This package is intended to allow you to cache portions of a web page by marking them using blade directives.
You can specify how long the partial will be cached for as well as naming it (to allow you to invalidate it if needed).
Nesting cacheTags is also possible, meaning that inner content will be cached at least as long as the outer cache is
Installation
Install it as a composer package with:
composer require perturbatio/cachetags
Add Perturbatio\CacheTags\CacheTagsProvider::class
to your config/app.php providers array
Add 'CacheTags' => Perturbatio\CacheTags\CacheTags::class
to your aliases
Then publish the config file with php artisan vendor:publish --tag=config
this will create a cachetag.php
config file in /config
Usage
Caching items
Blade
@cachetagStart('super-cool-widget', 15) <!-- widget cached for 15 minutes --> <?=superCoolWidgetThatTakesTooLongToGenerate();?> @cachetagStart('other-cool-widget', 'forever') <!-- widget cached until something clears it, nested inside the outer cache --> <?=otherCoolWidgetThatTakesTooLongToGenerate();?> @cachetagEnd() @cachetagEnd()
PHP
if ( cachetagHas('super-cool-widget') ){ echo cachetagGet('super-cool-widget'); } else { cachetagStart('super-cool-widget', 15); echo superCoolWidgetThatTakesTooLongToGenerate(); if ( cachetagHas('other-cool-widget') ){ echo cachetagGet('other-cool-widget'); } else { cachetagStart('other-cool-widget', 'forever'); //widget cached until something clears it, nested inside the outer cache echo otherCoolWidgetThatTakesTooLongToGenerate(); echo cachetagEnd(); } echo cachetagEnd(); }
Clearing items
Blade
@cachetagClear('super-cool-widget')
PHP
//clear the cache for a specific key cachetagClear('super-cool-widget'); if ( $otherCoolWidgetNeedsCacheInvalidated ){ //conditionally clear the cachetagClear('other-cool-widget'); }