Perturbatio / CacheTags by Perturbatio

Provides a partial caching mechanism for use with Laravel's Blade templating language or in normal PHP with the helpers
15,415
2
2
Package Data
Maintainer Username: Perturbatio
Maintainer Contact: bertpotato@gmail.com (Kris Kelly)
Package Create Date: 2016-09-15
Package Last Update: 2022-12-28
Language: PHP
License: MIT
Last Refreshed: 2024-05-01 15:05:29
Package Statistics
Total Downloads: 15,415
Monthly Downloads: 127
Daily Downloads: 1
Total Stars: 2
Total Watchers: 2
Total Forks: 1
Total Open Issues: 0

CacheTags - Laravel blade partial caching

Build Status Latest Stable Version Latest Unstable Version License Total Downloads

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');
}