No description
Find a file
Kevin Adametz 3d10cbf709 web: Startseiten-Feed cachen + Index gegen Filesort der Feed-Query
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>
2026-07-20 14:53:09 +00:00
.agents/skills 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
.codex 19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration 2026-05-19 16:36:13 +00:00
.devcontainer 22-05-2026 Optimierung der User und Admin Panels 2026-05-22 11:18:59 +02:00
.github/workflows first commit 2025-10-20 17:53:02 +02:00
_docs create PM v0.5 2026-05-20 19:14:39 +02:00
app web: Stale-while-revalidate-Cache für die öffentlichen Seitendaten 2026-07-20 14:29:15 +00:00
bootstrap security: Host-Whitelist & Legacy-API-Key-Übergabe härten (H5, M11) 2026-07-14 13:48:28 +00:00
config chore: persönliche VS-Code-Workspace-Datei aus dem Repo entfernen 2026-07-14 13:50:31 +00:00
database web: Startseiten-Feed cachen + Index gegen Filesort der Feed-Query 2026-07-20 14:53:09 +00:00
dev docs: Cutover-Delta nutzt --since, Medien-Delta-Hinweis 2026-07-20 13:03:35 +00:00
docs docs: Audit-Protokoll, KI-Kennzeichnung & Release-Notizen 2026-07-14 13:50:41 +00:00
lang web: Preise-Seite zeigt unter Weitere Leistungen nur noch Depublizieren 2026-07-16 11:34:22 +00:00
public API: KI-Deklaration als v1-Pflichtfeld, Legacy-Default fuer /service (Entscheidung 10.07.) 2026-07-10 12:41:24 +00:00
resources web: Startseiten-Feed cachen + Index gegen Filesort der Feed-Query 2026-07-20 14:53:09 +00:00
routes admin: Aktivitäts-Verlauf unter Reports ▸ Verlauf 2026-07-15 16:00:58 +00:00
storage/debugbar first commit 2025-10-20 17:53:02 +02:00
tests web: Startseiten-Feed cachen + Index gegen Filesort der Feed-Query 2026-07-20 14:53:09 +00:00
.cursorrules 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
.editorconfig first commit 2025-10-20 17:53:02 +02:00
.env.example Monitoring (R5.3): Betriebs-Alerts fuer Scheduler-/Queue-Ausfaelle 2026-07-09 15:34:40 +00:00
.gitattributes first commit 2025-10-20 17:53:02 +02:00
.gitignore API-Legacy-Paritaet: Arbeitsdokument mit Alt-Vertrag, Log-Auswertung, Schrittplan 2026-07-10 13:40:24 +00:00
.mcp.json 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
AGENTS.md 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
artisan first commit 2025-10-20 17:53:02 +02:00
boost.json 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
CLAUDE.md 19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration 2026-05-19 16:36:13 +00:00
composer.json Dev-Stack: Queue-Worker lauscht auch auf der classification-Queue 2026-07-10 11:50:34 +00:00
composer.lock deps: Sicherheits-Updates (Framework/Symfony/Guzzle) einspielen (H6) 2026-07-14 13:47:07 +00:00
docker-compose.yml Backend-WIP: Kontakt-Queue, Page-Cache, Validierungs-Feedback, i18n 2026-07-09 15:38:11 +00:00
package-lock.json first commit 2025-10-20 17:53:02 +02:00
package.json Multi-Domain-Asset-Infrastruktur: geteilte Vite-Konfiguration und DomainAssetContext 2026-06-12 08:16:09 +00:00
phpstan-baseline.neon 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
phpstan.neon 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
phpunit.xml Veroeffentlichungs-Gate: proaktive Buchungs-Meldung + Schalter test-stabil 2026-06-17 15:32:07 +00:00
pint.json 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
Readme.md 19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration 2026-05-19 16:36:13 +00:00
setup-new-asset-urls.sh 19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration 2026-05-19 16:36:13 +00:00
tailwind.portal.config.js Multi-Domain-Asset-Infrastruktur: geteilte Vite-Konfiguration und DomainAssetContext 2026-06-12 08:16:09 +00:00
tailwind.web.config.js 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
vite 13-05-2026 Frontend DEV + HUB 2026-05-13 18:11:03 +02:00
vite.config.js 19-05-2026 Rebrand Pressekonto, Hub-Flux UI und Legacy-Media-Migration 2026-05-19 16:36:13 +00:00
vite.portal.config.js Multi-Domain-Asset-Infrastruktur: geteilte Vite-Konfiguration und DomainAssetContext 2026-06-12 08:16:09 +00:00
vite.shared.js Multi-Domain-Asset-Infrastruktur: geteilte Vite-Konfiguration und DomainAssetContext 2026-06-12 08:16:09 +00:00
vite.web.config.js Multi-Domain-Asset-Infrastruktur: geteilte Vite-Konfiguration und DomainAssetContext 2026-06-12 08:16:09 +00:00

Multi-Domain Laravel-Anwendung

Übersicht

Diese Laravel-Anwendung unterstützt verschiedene Domains mit unterschiedlichen Styles:

Installation

  1. Repository klonen
  2. Abhängigkeiten installieren:
    composer install
    npm install
    
  3. Umgebungsvariablen konfigurieren (siehe .env.example und DOMAINS-CONFIG.md)
  4. Laravel-Anwendung initialisieren:
    php artisan key:generate
    php artisan migrate
    
  5. Assets kompilieren:
    npm run build
    npm run build:admin
    npm run build:web
    

Domain-Konfiguration

Die Domains werden über die .env-Datei konfiguriert. Für detaillierte Anweisungen siehe DOMAINS-CONFIG.md.

Lokaler Entwicklungsserver

php artisan serve

Asset-Kompilierung

Diese Anwendung verwendet Vite mit verschiedenen Konfigurationen:

  • Hauptkompilierung: npm run dev oder npm run build
  • Admin-Assets: npm run build:admin
  • Web-Assets: npm run build:web

Domain-Simulation

Während der Entwicklung können Domains simuliert werden, ohne die Hosts-Datei zu bearbeiten:

  1. In der .env-Datei: DEV_SIMULATE_DOMAIN=true
  2. Gewünschte Domain angeben: DEV_SIMULATED_DOMAIN=landing1.local

Favicons

Um Platzhalter-Favicons für alle konfigurierten Domains zu generieren:

php artisan domains:generate-favicons