From 7b939e9d6549b8b89378e040ec65abcd1ae25c3f Mon Sep 17 00:00:00 2001 From: Shannon Quinn Date: Fri, 17 Jul 2026 09:55:01 -0400 Subject: [PATCH] Add admin UI button to clear instance cache Adds a 'Clear Instance Cache' card to /i/admin/settings/system that POSTs to a CSRF-protected route and calls LandingCacheService::invalidate(), which clears every key behind the landing page, /api/v(1|2)/instance, and nodeinfo. Useful as an escape hatch after manual ConfigCache edits or when debugging stale-cache symptoms (like trying to set up a brand-new instance); under normal operation the event-driven invalidation in surrounding commits makes this unnecessary. --- .../Admin/AdminSettingsController.php | 7 +++++++ resources/views/admin/settings/system.blade.php | 16 ++++++++++++++++ routes/web-admin.php | 1 + 3 files changed, 24 insertions(+) diff --git a/app/Http/Controllers/Admin/AdminSettingsController.php b/app/Http/Controllers/Admin/AdminSettingsController.php index 744b4ae7f..fdc1adcc3 100644 --- a/app/Http/Controllers/Admin/AdminSettingsController.php +++ b/app/Http/Controllers/Admin/AdminSettingsController.php @@ -316,6 +316,13 @@ trait AdminSettingsController return view('admin.settings.system', compact('sys')); } + public function settingsClearInstanceCache(Request $request) + { + LandingCacheService::invalidate(); + + return redirect()->route('admin.settings.system')->with('status', 'Instance cache cleared.'); + } + public function settingsApiFetch(Request $request) { $cloud_storage = ConfigCacheService::get('pixelfed.cloud_storage'); diff --git a/resources/views/admin/settings/system.blade.php b/resources/views/admin/settings/system.blade.php index 5d13d31cf..cab948a7f 100644 --- a/resources/views/admin/settings/system.blade.php +++ b/resources/views/admin/settings/system.blade.php @@ -77,6 +77,22 @@ +
+

INSTANCE CACHE

+ @if(session('status')) +
{{ session('status') }}
+ @endif +
+
+

+ Clears the cached payloads behind the landing page, /api/v1/instance, /api/v2/instance, and nodeinfo (admin profile, rules, banner blurhash, user and post counts). Safe to run at any time; the values will repopulate on the next request. +

+
+ @csrf + +
+
+
@endsection @push('styles') diff --git a/routes/web-admin.php b/routes/web-admin.php index 021ef9f1b..7d6d681fc 100644 --- a/routes/web-admin.php +++ b/routes/web-admin.php @@ -64,6 +64,7 @@ Route::domain(config('pixelfed.domain.admin'))->prefix('i/admin')->group(functio Route::get('settings/backups', 'AdminController@settingsBackups')->name('admin.settings.backups'); Route::get('settings/storage', 'AdminController@settingsStorage')->name('admin.settings.storage'); Route::get('settings/system', 'AdminController@settingsSystem')->name('admin.settings.system'); + Route::post('settings/system/clear-instance-cache', 'AdminController@settingsClearInstanceCache')->name('admin.settings.system.clear-instance-cache'); Route::get('instances', 'AdminController@instances')->name('admin.instances'); Route::post('instances', 'AdminController@instanceScan');