thoughtco/statamic-cache-tracker

此包的最新版本(0.9.2)没有可用的许可证信息。

0.9.2 2024-09-12 05:47 UTC

This package is auto-updated.

Last update: 2024-09-12 05:48:05 UTC


README

Statamic Cache Tracker 会记录每个页面输出中使用的项目(条目、资产、术语等),当保存项目时,会清除这些页面的缓存(全部或部分)。

如何安装

从您的项目根目录运行以下命令

composer require thoughtco/statamic-cache-tracker

您也可以选择发布配置

php artisan vendor:publish --tag=statamic-cache-tracker-config

工作原理

该插件在大多数情况下应自动工作。它监听表单、导航和部分标签中的钩子,以及条目、术语、资产和全局变量的增强,以确定输出的内容。

然后,这些数据被添加到一个缓存存储中,用于确定在跟踪的项目保存或删除时应该失效哪些缓存数据。如果您想在其他事件上清除数据(例如,在创建条目时清除任何页面构建器元素),只需添加一个监听器并在 Tracker 门面上调用心 invalidate(例如,Tracker::invalidate(['partial:_partials/my_pagebuilder_block']);

默认使用缓存,或者如果您已指定 static_cache 存储则使用该存储。在清除静态缓存时,这些数据将被清除。

中间件

自动缓存中间件将自动添加到您的 web 中间件堆栈。如果您想将其包含在其他堆栈中,只需添加

\Thoughtco\StatamicCacheTracker\Http\Middleware\CacheTracker::class

追踪门面

该插件附带一个用于与追踪器交互的门面: \Thoughtco\StatamicCacheTracker\Facades\Tracker

添加您自己的跟踪数据

如果您有自己的自定义跟踪数据,例如为您自己的标签之一,您可以在门面上注册它们。请注意,跟踪仅在生成响应时发生,因此尽可能使用增强钩子。

使用闭包

Tracker::addAdditionalTracker(function ($tracker, $next) {
    // run your logic, for example in an augmentation hook
    // then call:
    $tracker->addContentTag('your-tag-here');

    return $next($tracker);
});

使用可调用的类

class AdditionalTrackerClass {
    public function __invoke($tracker, $next) {
        $tracker->addContentTag('additional::tag');
    }
}

Tracker::addAdditionalTracker(AdditionalTrackerClass::class);

派发事件

Thoughtco\StatamicCacheTracker\Events\TrackContentTags::dispatch(['additional::tag']);

使跟踪数据失效

要使包含您的跟踪数据的页面失效,请使用监听器或观察者,并调用

$tags = ['one', 'two', 'three'];
Tracker::invalidate($tags);