12-05-2026 Frontend dev
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run

This commit is contained in:
Kevin Adametz 2026-05-12 18:32:33 +02:00
parent 405df0a122
commit 5b8bdf4182
779 changed files with 480564 additions and 6241 deletions

View file

@ -0,0 +1,60 @@
# FTP Live Deploy - Legacy Performance Hotfixes
## 1. Dateien per FTP hochladen
Diese Dateien auf dem Live-Server ersetzen:
```text
_businessportal24.com/config/app.yml
_businessportal24.com/plugins/PressePortalPlugin/modules/pressrelease/lib/pluginPressReleaseActions.class.php
_businessportal24.com/plugins/PressePortalPlugin/modules/pressrelease/lib/pluginPressReleaseComponents.class.php
_businessportal24.com/plugins/PressePortalPlugin/modules/pressrelease/templates/_prlistItems.php
_businessportal24.com/plugins/PressePortalPlugin/modules/customercenter/templates/_home.php
```
Die Dateien unter `dev/legacy_performance/` muessen nicht auf den Live-Server, ausser du willst sie dort als Notiz ablegen.
## 2. Datenbank-Indizes einspielen
Die SQL-Datei lokal liegt hier:
```text
dev/legacy_performance/live-indexes.sql
```
Den Inhalt einmal in phpMyAdmin, Adminer oder einem anderen MySQL-Tool auf der Live-Datenbank ausfuehren.
Vorher optional pruefen:
```sql
SHOW INDEX FROM press_release;
SHOW INDEX FROM press_release_image;
```
Falls ein Indexname bereits existiert, die passende `ALTER TABLE`-Zeile auslassen.
## 3. Symfony-Cache per FTP leeren
Nach dem Upload den Symfony-Produktivcache leeren. Wenn kein SSH vorhanden ist, per FTP den Inhalt dieser Ordner loeschen:
```text
_businessportal24.com/cache/frontend/prod/
_businessportal24.com/cache/backend/prod/
```
Nur die Inhalte loeschen, nicht zwingend die Ordner selbst. Symfony legt benoetigte Cache-Dateien neu an.
## 4. Kurz testen
Nach dem Upload pruefen:
- Startseite oeffnet ohne Fehler.
- Pressemitteilungs-Detailseite oeffnet ohne Fehler.
- JSON-API fuer Pressemitteilungen liefert weiter URLs.
- Kundenbereich-Startseite oeffnet fuer einen Testkunden.
## 5. Rollback
Bei Problemen die oben genannten fuenf Legacy-Dateien aus dem Backup wieder hochladen und den Symfony-Cache erneut leeren.
Die SQL-Indizes muessen fuer ein Code-Rollback nicht entfernt werden. Sie veraendern keine Daten und sollten auch mit dem alten Code unkritisch sein.

View file

@ -0,0 +1,69 @@
# Legacy Performance Hotfixes - Umsetzungsstand
Stand: 2026-05-11
## Ziel
Die Legacy-Installation `_businessportal24.com` soll bis zum Relaunch bei Seiten mit vielen Pressemitteilungen spuerbar weniger Datenbanklast erzeugen.
## Geaenderte Dateien
```text
_businessportal24.com/config/app.yml
```
Neue Schalter:
- `pressrelease_count_hits_enabled: false`
- `homepage_totals_cache_lifetime: 300`
Damit wird das direkte Hit-Counting auf der heissen Tabelle `press_release` deaktiviert und die Startseiten-Zaehler werden fuer 5 Minuten gecacht.
```text
_businessportal24.com/plugins/PressePortalPlugin/modules/pressrelease/lib/pluginPressReleaseActions.class.php
```
Der Hit-Counter schreibt nur noch, wenn `app_pressrelease_count_hits_enabled` explizit aktiviert ist.
```text
_businessportal24.com/plugins/PressePortalPlugin/modules/pressrelease/lib/pluginPressReleaseComponents.class.php
```
Die Startseiten-Homelist laedt die Kategorie per Join mit und cached die globalen Zaehler fuer Pressemitteilungen und Redakteure ueber `sfFileCache`.
```text
_businessportal24.com/plugins/PressePortalPlugin/modules/pressrelease/templates/_prlistItems.php
```
Kategorie, Firma und Bilder werden pro Listenzeile nicht mehr mehrfach ueber Getter neu angefragt.
```text
_businessportal24.com/plugins/PressePortalPlugin/modules/customercenter/templates/_home.php
```
Die Kundenstartseite fuehrt die Pressemitteilungs-Liste nicht mehr mehrfach fuer Count, Anzeige und Link-Pruefung aus. Stattdessen wird einmal `limit(6)` geladen.
## Neue Datei
```text
dev/legacy_performance/live-indexes.sql
```
Enthaelt die empfohlenen Live-Indizes fuer `press_release` und `press_release_image`.
## Erwartete Wirkung
- Weniger wiederholte Count-Queries auf der Startseite.
- Weniger Lazy-Loading in Pressemitteilungslisten.
- Keine Schreiblast mehr pro Pressemitteilungs-Detailaufruf, solange der Hotfix-Schalter deaktiviert bleibt.
- Schnellere Filter- und Sortierzugriffe nach Einspielen der SQL-Indizes.
## Wichtiger Hinweis
Die Hit-Zahlen werden durch diesen Hotfix nicht weiter hochgezaehlt. Wenn die Statistik wichtiger ist als die Entlastung, kann auf dem Live-Server in `_businessportal24.com/config/app.yml` wieder gesetzt werden:
```yaml
pressrelease_count_hits_enabled: true
```
Fuer die Performance-Ueberbrueckung bis zum Relaunch sollte der Wert auf `false` bleiben.

View file

@ -0,0 +1,17 @@
-- Legacy performance hotfixes for businessportal24.com
-- Execute these statements on the live database once.
--
-- If an index with the same name already exists, skip the matching ALTER TABLE
-- statement. Older MySQL versions do not support ADD INDEX IF NOT EXISTS.
ALTER TABLE press_release
ADD INDEX pr_status_language_created_idx (status, language, created_at);
ALTER TABLE press_release
ADD INDEX pr_category_status_language_created_idx (category_id, status, language, created_at);
ALTER TABLE press_release
ADD INDEX pr_company_status_language_created_idx (company_id, status, language, created_at);
ALTER TABLE press_release_image
ADD INDEX pri_pressrelease_preview_idx (press_release_id, is_preview_image);