innoge/laravel-policy-soft-cache

此包帮助防止应用程序生命周期中频繁调用策略导致的性能问题。

1.4.0 2024-04-17 11:27 UTC

This package is auto-updated.

Last update: 2024-09-17 12:18:24 UTC


README

Latest Version on Packagist Tests Fix PHP code style issues Total Downloads

使用软缓存优化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中定义,可能会由于服务提供程序的加载顺序而出现冲突。

解决步骤

要解决这个问题,请按照以下步骤操作

  1. 手动服务提供程序注册:将\Innoge\LaravelPolicySoftCache\LaravelPolicySoftCacheServiceProvider::class添加到config/app.php中providers数组的末尾。此手动注册确保LaravelPolicySoftCacheServiceProvider在所有其他服务提供程序之后加载,包括AuthServiceProvider。

    'providers' => [
        // Other Service Providers
    
        \Innoge\LaravelPolicySoftCache\LaravelPolicySoftCacheServiceProvider::class,
    ],
  2. 禁用包的自动发现:为防止Laravel的自动发现机制自动加载服务提供程序,将innoge/laravel-policy-soft-cache添加到composer.json中dont-discover数组。此步骤对于维护手动加载顺序至关重要。

    "extra": {
        "laravel": {
            "dont-discover": ["innoge/laravel-policy-soft-cache"]
        }
    },
  3. 重新安装依赖项:更新composer.json后,运行composer install以应用更改。此步骤对于更改生效是必要的。

    composer install

测试

composer test

变更日志

请参阅CHANGELOG获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING获取详细信息。

安全漏洞

请参阅我们的安全策略了解如何报告安全漏洞。

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件