handmadeweb/statamic-multi-cacher

dev-main 2021-07-27 22:00 UTC

This package is auto-updated.

Last update: 2024-09-28 05:15:57 UTC


README

Latest Version on Packagist Total Downloads MIT Licensed Run Tests Statamic v3.1

Statamic Multi Cacher 是一种缓存策略“重定向器”,可以根据您自己的逻辑提供不同的缓存策略。

一个例子可能是绕过/禁用超级管理员的缓存,并将 half 策略提供给其他所有人。

这是测试版

请注意,目前不建议在生产环境中使用此版本。

需求

  • Statamic 3.1 或更高版本

安装

您可以通过 composer 安装此包

composer require handmadeweb/statamic-multi-cacher

使用方法

首先将策略添加到您的 static_cache 配置文件中

'strategies' => [

    'half' => [
        'driver' => 'application',
        'expiry' => null,
    ],

    'full' => [
        'driver' => 'file',
        'path' => public_path('static'),
        'lock_hold_length' => 0,
    ],

    'multi' => [
        'driver' => 'multi-cacher',
    ],
],

然后指定您希望 multi-cacher 可用的策略名称

'multi' => [
    'driver' => 'multi-cacher',
    'strategies' => [
        'half',
        'full',
    ],
],

然后更新配置文件顶部的 static_cache 策略

'strategy' => 'multi',

需要注意的是,如果省略策略或为空,则 multi-cacher 策略将默认为 nullnull 策略始终可供选择,因此您不需要将其添加到策略部分。

如果您没有覆盖 CacheSelector(即 \HandmadeWeb\StatamicMultiCacher\CacheSelector),则第一个策略将被始终使用。在上面的例子中,这将使用 half

可以通过如下扩展 CacheSelector 类来覆盖

<?php

namespace App\Cachers;

use Illuminate\Support\Facades\Auth;
use HandmadeWeb\StatamicMultiCacher\CacheSelector;

class MyMultiCacher extends CacheSelector
{
    public function selectCacher()
    {
        // Disable cache for super users.
        if(Auth::check() && Auth::user()->isSuper()){
            return $this->multiCacher()->cachers()->get('null');
        }

        // Cache everyone else with the half strategy.
        return $this->multiCacher()->cachers()->get('half');
    }
}

然后更新您的 static_cache 配置如下

'multi' => [
    'driver' => 'multi-cacher',
    'selector' => \App\Cachers\MyMultiCacher::class,
    'strategies' => [
        'half',
    ],
],

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

鸣谢

许可

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