Files
laralog/app/Filament/Pages/CacheManager.php
T

65 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Filament\Pages;
use App\Blog\Support\PageCacheMiddleware;
use Filament\Notifications\Notification;
use Filament\Pages\Page;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Cache;
class CacheManager extends Page
{
protected static \UnitEnum|string|null $navigationGroup = '管理';
protected static string|\BackedEnum|null $navigationIcon = 'heroicon-o-bolt';
protected static ?string $navigationLabel = '缓存管理';
protected string $view = 'filament.pages.cache-manager';
public function flushPages(): void
{
PageCacheMiddleware::flush();
Notification::make()->title('前台页面缓存已清空')->success()->send();
}
public function flushSidebar(): void
{
foreach (['blog.sidebar.categories', 'blog.sidebar.recent_posts', 'blog.sidebar.recent_comments', 'blog.sidebar.hot_tags', 'blog.sidebar.links', 'blog.sidebar.stats'] as $key) {
Cache::forget($key);
}
Notification::make()->title('侧边栏缓存已清空')->success()->send();
}
public function flushSettings(): void
{
\App\Models\Setting::flushCache();
Cache::forget('attach.legacy_ids');
Notification::make()->title('设置缓存已清空')->success()->send();
}
public function flushAll(): void
{
PageCacheMiddleware::flush();
\App\Models\Setting::flushCache();
Cache::flush();
Notification::make()->title('全部缓存已清空')->success()->send();
}
public function recompile(): void
{
Artisan::call('view:clear');
Artisan::call('route:clear');
Artisan::call('config:clear');
Notification::make()->title('视图/路由/配置缓存已重建')->success()->send();
}
public function getPageCacheCountProperty(): int
{
return PageCacheMiddleware::count();
}
}