performance: Caching, deferred Tracking & externe Timeouts (H7, M12, M13)
- Navigations-Chrome (CategoryNavigation), Suche- und Newsroom-Seitendaten 300s gecacht; gemeinsamer WebPageCache-Helper (eine TTL/Key-Konvention). - Cache-Poisoning über ?page= geschlossen (Key an Paginator ausgerichtet, kein withQueryString im Cache); Newsrooms cachet nur den ungefilterten Fall und die ersten Seiten (kein unbegrenzter Key-Raum). - Detailseiten schreiben Hits/View-Events deferred nach der Response (M12); OpenAI-/Markt-/USt-ID-Aufrufe mit Connect-Timeouts und begrenzten Retries; Admin-Memo-Caches konsistent invalidiert. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
5a492926dd
commit
23cbd0bfe2
18 changed files with 419 additions and 39 deletions
40
tests/Feature/Web/CategoryNavigationCacheTest.php
Normal file
40
tests/Feature/Web/CategoryNavigationCacheTest.php
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
use App\Support\CategoryNavigation;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Regression zu Befund H7 (Audit 14.07.2026): Die Rubriken-Navigation rendert
|
||||
* auf jeder Web-Seite und darf nicht pro Request neu über das Archiv aggregieren.
|
||||
*/
|
||||
test('category navigation is cached and not recomputed on the second call', function () {
|
||||
/** @var TestCase $this */
|
||||
config()->set('app.theme', 'presseecho');
|
||||
app()->setLocale('de');
|
||||
Cache::flush();
|
||||
|
||||
DB::enableQueryLog();
|
||||
CategoryNavigation::items(5);
|
||||
expect(DB::getQueryLog())->not->toBeEmpty();
|
||||
|
||||
DB::flushQueryLog();
|
||||
CategoryNavigation::items(5);
|
||||
expect(DB::getQueryLog())->toBeEmpty();
|
||||
});
|
||||
|
||||
test('category navigation caches per portal, language and limit separately', function () {
|
||||
/** @var TestCase $this */
|
||||
config()->set('app.theme', 'presseecho');
|
||||
app()->setLocale('de');
|
||||
Cache::flush();
|
||||
|
||||
CategoryNavigation::items(5);
|
||||
|
||||
expect(Cache::has('web.category-nav.presseecho.de.5'))->toBeTrue()
|
||||
->and(Cache::has('web.category-nav.presseecho.de.all'))->toBeFalse();
|
||||
|
||||
CategoryNavigation::items(null);
|
||||
expect(Cache::has('web.category-nav.presseecho.de.all'))->toBeTrue();
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue