craftcms/laravel-dependency-aware-cache
Laravel cache extension that tracks dependencies and automatically invalidates cached items when related keys change. Useful for keeping derived or aggregated data fresh without manual cache flushing. Designed for straightforward integration with Laravel’s cache system.
user_id or product_sku). This is a strong fit for systems where cache invalidation is tied to dynamic data changes (e.g., CMS, e-commerce, or real-time dashboards).TagsInvalidated event suggests integration with Laravel’s event system, allowing seamless invalidation triggers (e.g., Model::saved → cache invalidation). This reduces boilerplate for manual cache clearing.Cache::tags() supports basic invalidation, this package offers richer dependency types (CallbackDependency, FileDependency, ValueDependency), which could simplify complex scenarios (e.g., invalidating caches when a file changes or a computed value updates).Cache facade and CacheManager, requiring zero configuration for basic usage. The DependencyCache facade provides extended docblocks, ensuring IDE support.Cache::put()/Cache::get() calls will work unchanged, with optional dependency parameters.CallbackDependency) require serialization, which could bloat cache keys or fail in edge cases (e.g., closures with non-serializable objects).CacheInvalidated), or is invalidation one-way?ModelObservers triggering invalidation).Cache::put(..., new CallbackDependency(fn() => $this->getDynamicData()))).user:{id}, product:{sku}).Cache::forget() calls, cron jobs).config('cache.use_dependency_aware')).user:{id} invalidate?").composer require and php artisan cache:clear.spatie/laravel-cache, predis/predis, or custom cache packages.Cache facade bindings.composer require craftcms/laravel-dependency-aware-cache
Cache::forget('key') to dependency-based invalidation:
// Before
Cache::put('user_123_data', $data);
event(ModelSaved::class, $user); // Manually trigger invalidation
// After
Cache::put('user_123_data', $data, now()->addHour(), new TagDependency('user:123'));
ModelObservers or ServiceProvider boot methods to invalidate caches:
User::observe(function ($user) {
TagDependency::invalidate("user:{$user->id}");
});
AllDependencies for multi-table updates).Cache::forget() calls.TagDependency to cache calls). Refactoring may be needed for legacy caches.user:123").How can I help you explore Laravel packages today?