🚀 Gato GraphQL v18.0 veröffentlicht: Parsed-Query-Caching, verstärkte Sicherheit und neuer Gemini-Übersetzungsanbieter
Gato GraphQL v18.0 ist da 🎉
Dieses Release ist deutlich schneller und verbraucht erheblich weniger Speicher, ermöglicht dir das Caching der geparsten GraphQL-queries auf der Festplatte, um wiederholtes Parsen und Kompilieren zu überspringen, verschärft die Standard-Capability-Prüfungen für die Felder Email Sender, HTTP Client und Environment Variable, enthält mehrere Bugfixes und einige Sicherheitspatches und fügt einen neuen Übersetzungsanbieter Gemini sowie konfigurierbare Request- und Connection-Timeouts für Übersetzungen hinzu.
Lies weiter für die Highlights.
⚡ Geparste GraphQL-queries auf der Festplatte cachen
Jede Anfrage muss die GraphQL-query parsen, gegen das Schema validieren und den Ausführungsplan erstellen. v18 kann nun die vorbereitete Query auf der Festplatte persistieren und sie bei späteren Ausführungen neu laden — und dabei die wiederholte Parse- und Kompilierarbeit vollständig überspringen.
Aktiviere es auf der Settings-Seite unter Server Configuration > Caching > Cache parsed GraphQL queries?:

Dies cached die Vorbereitung der Query (Parsen und Kompilieren), nicht die Antwortsdaten. Für HTTP-Caching von Antworten, siehe HTTP-Caching hinzufügen.
Die Dateien werden im Cache-Verzeichnis des Plugins gespeichert. Wenn der Plugin-Ordner nicht beschreibbar ist, kannst du den Cache auf einen anderen Ort umleiten — siehe Den Cache-Ordner überschreiben.
➡️ Alle Details in Caching der geparsten GraphQL-queries.
⚡ Schneller und schlanker — überall
Über den Parsed-Query-Cache hinaus wurden die internen Plugin-Komponenten in v18 grundlegend überarbeitet: Jede GraphQL-Anfrage ist deutlich schneller und verbraucht erheblich weniger Speicher.
Die Gewinne sind global — sie gelten für jede Query, jede Directive, jede Persisted Query — und sind besonders sichtbar bei großen Schemas, langen queries und Websites, die viele GraphQL-Anfragen pro Seite ausführen (z. B. headless WordPress, interne APIs).
Große Websites, die zuvor an PHP-Speicherlimits gestoßen sind oder langsame Antwortzeiten verzeichneten, sollten einen echten Unterschied spüren, ohne dass Konfigurationsänderungen erforderlich sind — einfach das Plugin aktualisieren.
🔒 Verstärkte Sicherheitsstandards
Drei Bereiche haben strengere Standardeinstellungen erhalten, damit das Plugin von Anfang an sicherer ist.
Email Sender — Erforderliche Capability
Die Mutation _sendEmail kann jetzt auf Benutzer mit einer bestimmten WordPress-Capability eingeschränkt werden, konfiguriert unter Plugin Configuration > Email Sender.

Standardmäßig manage_options, damit Abonnenten die Mutation nicht nutzen können, um beliebige Empfänger zu spammen. Wähle (any logged-in user), um die Prüfung zu deaktivieren.
HTTP Client — Erforderliche Capability für den Zugriff auf interne URLs
Einige URLs werden zu internen Adressen aufgelöst (127.0.0.1, Link-Local-Bereiche, Cloud-Metadata-Endpunkte usw.), die interne Dienste exponieren können, wenn sie erreichbar sind. Eine neue Einstellung unter Plugin Configuration > HTTP Client beschränkt das Ansprechen dieser Adressen auf Benutzer mit einer bestimmten WordPress-Capability.

Standardmäßig manage_options, damit Nicht-Admin-Benutzer keine internen Dienste über die HTTP-Client-Felder erreichen können. Wähle (any logged-in user), um die Prüfung zu deaktivieren.
Environment Variables — Denylist für Nicht-Admin-Benutzer
Das Feld _env erforderte bereits eine explizite Allow-List, und diese Liste ist standardmäßig leer. v18 fügt ein zusätzliches Sicherheitsnetz für Nicht-Admin-Benutzer hinzu: Selbst wenn diese Namen in der Konfiguration in der Allow-List stehen, wird ihnen der Zugriff verweigert.
Immer verweigert (WordPress-Secrets):
AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT, DB_NAME, DB_USER, DB_PASSWORD, DB_HOST, DB_CHARSET, DB_COLLATE.
Ebenfalls verweigert — jede Variable, deren Name folgendes enthält: PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.
Admin-Benutzer haben weiterhin vollen Zugriff.
➡️ Sieh die Security-Sektion der Dokumentation für die vollständige Liste.
🌐 Übersetzung: Neuer Gemini-Anbieter
Die Directive @strTranslate unterstützt jetzt Google Gemini als Übersetzungsanbieter, neben ChatGPT, Claude, DeepL, DeepSeek, Google Translate, Mistral, OpenRouter und selbst gehosteten LLMs.
Übersetze jedes String-Feld in die gewünschte Sprache:
{
posts {
title @strTranslate(
from: "en",
to: "fr",
provider: gemini
)
content @strTranslate(
from: "en",
to: "fr",
provider: gemini
)
}
}Die folgenden Gemini-Modelle werden unterstützt:
- Gemini 2.0 Flash (
gemini-2.0-flash) - Gemini 2.0 Flash-Lite (
gemini-2.0-flash-lite) - Gemini 2.5 Flash (
gemini-2.5-flash) - Gemini 2.5 Flash-Lite (
gemini-2.5-flash-lite) - Gemini 2.5 Pro (
gemini-2.5-pro) - Gemini 3.1 Flash-Lite (
gemini-3.1-flash-lite)
Konfiguriere deinen Google-API-Schlüssel (über Settings, wp-config.php oder eine Umgebungsvariable), wähle ein Modell und du bist bereit zu übersetzen.
➡️ Sieh die Referenzdokumentation für Gemini Translation.
⏱️ Übersetzung: Request- und Connection-Timeouts
Die Übersetzung eines langen Dokuments über einen Drittanbieter kann langsam sein, und ein blockierter Upstream würde sonst einen PHP-Worker blockieren, bis PHP selbst die Anfrage abbricht — was zu einem generischen HTTP 502 / 504 oder einer leeren "Maximum execution time exceeded"-Seite führt.
v18 stellt zwei Timeout-Einstellungen unter Plugin Configuration > Translation bereit:
- Request timeout: maximale Zeit (in Sekunden) für das Warten auf die vollständige Antwort des Übersetzungsanbieters.
- Connection timeout: maximale Zeit (in Sekunden) für das Warten beim Aufbau der Verbindung.

Halte beide Werte etwas unterhalb des max_execution_time deines Servers, damit eine blockierte Übersetzung sauber mit einem kontrollierten Fehler in den Logs scheitert, anstatt den generischen Server-Timeout auszulösen. Wenn deine Übersetzungen regelmäßig ein Timeout erreichen, erhöhe beide Werte und das max_execution_time deines Servers gleichzeitig.
🐛 Bugfixes und Sicherheitspatches
Zusätzlich zu den oben beschriebenen neuen Funktionen enthält v18.0 auch mehrere Bugfixes und behebt einige Sicherheitslücken. Wir empfehlen dringend, so schnell wie möglich auf v18 zu aktualisieren.
Update
Das Release wird jetzt über das WordPress-Plugin-Verzeichnis und dein Kunden-Dashboard ausgerollt. Aktualisiere aus deiner WordPress-Administration (Plugins → Updates), oder lade die neueste Version von deinem Konto herunter.
Sieh das changelog für die vollständige Liste der Änderungen.
Viel Spaß mit v18! 🎉