Der Livewire-Feed lief auf jeder Startseiten-Impression ungecacht; seine ORDER-BY-published_at-Query kann wegen portal IN (…) keinen bestehenden Index zur Sortierung nutzen und filesortete ~10-20k Zeilen (live gemessen 2,3 s pro Aufruf — die Startseite blieb dadurch trotz Seitendaten-Cache bei 6-9 s TTFB). Zwei Maßnahmen: - Neuer Index (language, status, deleted_at, published_at): Backward Index Scan statt Filesort, Query 2 ms statt 2,3 s — greift auch für ungecachte Livewire-Interaktionen (Zeitraum-Filter, tiefe Seiten). - Feed-Seiten 1-3 laufen über WebPageCache (SWR wie die übrigen Seitendaten); gecacht werden nur items + total, der Paginator wird pro Request neu gebaut (keine Host-URLs des Cache-Erzeugers im Cache). Unbekannte timeframe-Werte aus der URL fallen auf 'all' zurück und erreichen weder Query noch Cache-Key. Der doppelte Gesamt-COUNT pro Request entfällt; der 'Mehr laden'-Zähler nutzt jetzt den gefilterten Total des Paginators. Lokal mit Live-Datenbestand: Startseite kalt 875 ms (vorher 2,5 s), warm 11 ms (vorher 72 ms). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| factories | ||
| migrations | ||
| seeders | ||
| .gitignore | ||