innoge / laravel-policy-soft-cache
此包帮助防止应用程序生命周期中频繁调用策略导致的性能问题。
Requires
- php: ^8.1
- illuminate/contracts: ^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.13.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0|^7.0|^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0|^8.0|^9.0
- pestphp/pest: ^1.0|^2.0
- pestphp/pest-plugin-laravel: ^1.0|^2.0
README
使用软缓存优化Laravel应用程序的性能,缓存策略调用以防止同一请求生命周期内的冗余检查,提高应用程序的响应时间。
要求
此包与Laravel 9、10、11兼容,以及PHP 8.1、8.2和8.3。
安装
您可以通过Composer安装此包
composer require innoge/laravel-policy-soft-cache
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Innoge\LaravelPolicySoftCache\LaravelPolicySoftCacheServiceProvider"
这是已发布配置文件的内容
return [ /* * When enabled, the package will cache the results of all Policies in your Laravel application */ 'cache_all_policies' => env('CACHE_ALL_POLICIES', true), ];
您还可以在.env文件中使用CACHE_ALL_POLICIES来更改它。
CACHE_ALL_POLICIES=false
使用方法
默认情况下,此包缓存您整个应用程序中所有的策略调用。您可以通过将cache_all_policies配置设置为false来禁用此行为。现在您可以指定哪些策略类应该被软缓存,哪些不应该。如果要将策略缓存,请添加Innoge\LaravelPolicySoftCache\Contracts\SoftCacheable接口。
例如
use Innoge\LaravelPolicySoftCache\Contracts\SoftCacheable;
class UserPolicy implements SoftCacheable
{
...
}
清除缓存
有时您需要在模型更改后清除策略缓存。您可以调用Innoge\LaravelPolicySoftCache::flushCache();方法。
已知问题
Gate::before和Service Provider加载顺序
当在利用Gate::before的应用程序中安装innoge/laravel-policy-soft-cache包时,通常在AuthServiceProvider中定义,可能会由于服务提供程序的加载顺序而出现冲突。
解决步骤
要解决这个问题,请按照以下步骤操作
-
手动服务提供程序注册:将\Innoge\LaravelPolicySoftCache\LaravelPolicySoftCacheServiceProvider::class添加到config/app.php中providers数组的末尾。此手动注册确保LaravelPolicySoftCacheServiceProvider在所有其他服务提供程序之后加载,包括AuthServiceProvider。
'providers' => [ // Other Service Providers \Innoge\LaravelPolicySoftCache\LaravelPolicySoftCacheServiceProvider::class, ],
-
禁用包的自动发现:为防止Laravel的自动发现机制自动加载服务提供程序,将innoge/laravel-policy-soft-cache添加到composer.json中dont-discover数组。此步骤对于维护手动加载顺序至关重要。
"extra": { "laravel": { "dont-discover": ["innoge/laravel-policy-soft-cache"] } },
-
重新安装依赖项:更新composer.json后,运行composer install以应用更改。此步骤对于更改生效是必要的。
composer install
测试
composer test
变更日志
请参阅CHANGELOG获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING获取详细信息。
安全漏洞
请参阅我们的安全策略了解如何报告安全漏洞。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。