REDAXO-Addon, das dem Media Manager einen Effekt für HTTP Content Negotiation hinzufügt. Der Browser teilt dem Server über den Accept-Header mit, welche Bildformate er unterstützt – Media Negotiator liefert daraufhin automatisch das optimale Format aus.
- Funktionsweise
- Unterstützte Formate
- Voraussetzungen
- Installation
- Einrichtung
- Einstellungen
- User-Agent-Fallback
- CLI-Cache-Warmup
- Setup-Seite
- Changelog
Der Effekt „Negotiate image format" liest den Accept-Header des Browsers und gibt das bestmögliche Format zurück:
- AVIF – falls Browser und Server AVIF unterstützen
- WebP – falls Browser und Server WebP unterstützen
- Original – als Fallback ohne Konvertierung
Die Konvertierung erfolgt entweder über GD (Standard) oder Imagick (konfigurierbar). Der Media Manager Cache wird je Format getrennt verwaltet, sodass Bilder nicht doppelt konvertiert werden.
Weitere Informationen zu HTTP Content Negotiation: MDN Web Docs
| Format | GD | Imagick |
|---|---|---|
| WebP | imagewebp() + GD-Flag |
WEBP-Codec nötig |
| AVIF | imageavif() + GD-Flag |
AVIF-Codec nötig |
- REDAXO ≥ 5.18.0
- PHP ≥ 8.1
- Media Manager Addon ≥ 2.17.0
- GD mit WebP- und/oder AVIF-Unterstützung oder Imagick mit entsprechenden Codecs
Installation über den REDAXO-Installer oder manuell durch Hochladen in redaxo/src/addons/media_negotiator.
- Im REDAXO-Backend zu Media Manager → Medientypen navigieren.
- Den gewünschten Medientyp öffnen oder einen neuen anlegen.
- Den Effekt „Negotiate image format" hinzufügen.
- Den Medientyp speichern.
Ab sofort liefert der Media Manager Bilder dieses Typs automatisch im optimalen Format aus.
Unter Media Manager → Media Negotiator → Einstellungen stehen folgende Optionen zur Verfügung:
| Option | Beschreibung | Standard |
|---|---|---|
| Imagick erzwingen | Imagick wird auch dann verwendet, wenn GD-Funktionen verfügbar sind | Nein |
| AVIF deaktivieren | Verhindert AVIF-Ausgabe, z. B. wenn der Server keinen AVIF-Codec besitzt | Nein |
| WebP-Qualität | Kompressionsstufe für WebP (0–100) | 80 |
| AVIF-Qualität | Kompressionsstufe für AVIF (0–100) | 60 |
| User-Agent-Fallback | Format auch anhand des User-Agent ermitteln, wenn der Accept-Header keine expliziten Formate enthält | Nein |
Einige Browser – insbesondere Safari ab Version 16.4 – unterstützen AVIF, senden aber kein image/avif im Accept-Header. Mit aktiviertem User-Agent-Fallback analysiert Media Negotiator zusätzlich den User-Agent-String und wählt das bestmögliche Format:
| Browser | AVIF ab | WebP ab |
|---|---|---|
| Safari | 16.4 | 14.0 |
| Chrome / Chromium | 85 | 32 |
| Firefox | 93 | 65 |
Der UA-Fallback greift nur wenn der Accept-Header keine expliziten Bildformate enthält. Die Aktivierung empfiehlt sich, wenn Safari-Nutzer ein großes Anteil der Besucher ausmachen.
Das Kommando media:negotiator:warmup füllt den Media-Manager-Cache vorab, ohne dass Seitenbesucher auf die erste Konvertierung warten müssen.
php redaxo/bin/console media:negotiator:warmup --type=mein-medientyp| Option | Beschreibung | Standard |
|---|---|---|
--type |
Medientyp-Name (mehrfach verwendbar) | alle Typen mit Negotiator-Effekt |
--formats |
Comma-separierte Formate: avif,webp,default |
avif,webp |
--limit |
Maximale Anzahl Bilder | unbegrenzt |
--base-url |
Basis-URL für Requests | REDAXO server-Konfiguration |
--dry-run |
Nur anzeigen, was konvertiert würde | – |
Unter Media Manager → Media Negotiator → Setup werden die verfügbaren Codecs und Bibliotheken auf dem Server angezeigt. Außerdem werden Demo-Bilder in allen verfügbaren Formaten gerendert, um die Konvertierung direkt zu überprüfen.
Alle Änderungen sind in der CHANGELOG.md dokumentiert.