web: Stale-while-revalidate-Cache für die öffentlichen Seitendaten
Start-/Kategorieseiten bauten nach Ablauf der 5-Minuten-TTL im Besucher- Request neu (~25-30 Archiv-Queries über ~100k PMs) — Long-Tail-Rubriken waren dadurch praktisch bei jedem Aufruf langsam. WebPageCache nutzt jetzt Cache::flexible([300, 3600]): Innerhalb 5 Min frisch wie bisher, danach wird bis zu 1 h sofort der alte Stand serviert und der Neuaufbau läuft nach der Response (deferred). HomePageData/CategoryPageData/TickerData laufen dafür über die gemeinsame WebPageCache-Konvention (Keys unverändert), die Hub-Kennzahlen über flexible([3600, 14400]). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
5011f28f88
commit
bd4ad855ba
6 changed files with 77 additions and 37 deletions
|
|
@ -13,12 +13,18 @@ use Illuminate\Support\Facades\Cache;
|
|||
/**
|
||||
* Datenaufbereitung der Hub-Landing (pressekonto.de): aktiver Tarif-Katalog
|
||||
* plus echte Plattform-Kennzahlen statt statischer Marketing-Zahlen.
|
||||
*
|
||||
* Die Kennzahlen ändern sich träge, ihr Aufbau zählt aber übers Gesamtarchiv
|
||||
* (inkl. whereHas über alle Firmen) → stale-while-revalidate mit langem
|
||||
* Fenster, damit der Aufbau nie im Besucher-Request läuft.
|
||||
*/
|
||||
class HubPageData
|
||||
{
|
||||
private const StatsCacheKey = 'web.hub.landing-stats';
|
||||
|
||||
private const StatsTtlSeconds = 3600;
|
||||
private const StatsFreshSeconds = 3600;
|
||||
|
||||
private const StatsStaleSeconds = 14400;
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
|
|
@ -28,7 +34,7 @@ class HubPageData
|
|||
return [
|
||||
'plans' => Plan::query()->active()->get(),
|
||||
'singlePmPriceCents' => (int) config('billing.single_pm_price_cents'),
|
||||
'hubStats' => Cache::remember(self::StatsCacheKey, self::StatsTtlSeconds, function (): array {
|
||||
'hubStats' => Cache::flexible(self::StatsCacheKey, [self::StatsFreshSeconds, self::StatsStaleSeconds], function (): array {
|
||||
$published = PressRelease::query()
|
||||
->withoutGlobalScope(PortalScope::class)
|
||||
->visibleInArchive();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue