Blog

๐Ÿš€ Gato GraphQL v18.0 uitgebracht: caching van geparseerde queries, verbeterde beveiliging en een nieuwe Gemini-vertaalprovider

Leonardo Losoviz
Door Leonardo Losoviz ยท

Gato GraphQL v18.0 is beschikbaar ๐ŸŽ‰

Deze release is merkbaar sneller en gebruikt aanzienlijk minder geheugen, laat je geparseerde GraphQL-queries op schijf cachen om herhaald parse- en compilewerk over te slaan, versterkt de standaard capability-controles voor de velden Email Sender, HTTP Client en Environment Variable, levert diverse bugfixes en een aantal beveiligingspatches, en voegt een nieuwe Gemini-vertaalprovider toe plus configureerbare Request- en Connection-time-outs voor vertalingen.

Lees verder voor de hoogtepunten.

โšก Cache geparseerde GraphQL-queries op schijf

Elk verzoek moet de GraphQL-query parsen, valideren tegen het schema en een uitvoeringsplan bouwen. Vanaf v18 kun je de voorbereide query op schijf bewaren en bij volgende uitvoeringen opnieuw laden โ€” het herhaalde parse- en compilewerk wordt volledig overgeslagen.

Activeer dit op de pagina Settings, onder Server Configuration > Caching > Cache parsed GraphQL queries?:

Caching van geparseerde GraphQL-queries inschakelen in de Settings
Caching van geparseerde GraphQL-queries inschakelen in de Settings

Dit cachet de voorbereiding van de query (parsen en compileren), niet de responsdata. Voor HTTP-caching van responses, zie HTTP-caching toevoegen.

Bestanden worden opgeslagen in de cache-map van de plugin. Als de plugin-map niet beschrijfbaar is, kun je de cache ergens anders laten opslaan โ€” zie De cache-map overschrijven.

โžก๏ธ Volledige details in Geparseerde GraphQL-queries cachen.

โšก Sneller en slanker โ€” over de hele linie

Naast de cache voor geparseerde queries zijn de plugininternen in v18 grondig herzien: elk GraphQL-verzoek is merkbaar sneller en verbruikt aanzienlijk minder geheugen.

De winst is globaal โ€” hij geldt voor elke query, elke directive, elke persisted query โ€” en is vooral zichtbaar bij grote schema's, lange queries en sites die veel GraphQL-verzoeken per pagina uitvoeren (bijv. headless WordPress, interne API's).

Grote sites die eerder tegen PHP-geheugenlimieten aanliepen of trage responstijden ervoeren, zullen een duidelijk verschil merken zonder dat er configuratiewijzigingen nodig zijn โ€” update gewoon de plugin.

๐Ÿ”’ Verbeterde standaardbeveiliging

Drie gebieden hebben strengere standaardinstellingen gekregen zodat de plugin direct veiliger is na installatie.

Email Sender โ€” Vereiste capability

De _sendEmail-mutatie kan nu worden beperkt tot gebruikers met een specifieke WordPress-capability, geconfigureerd onder Plugin Configuration > Email Sender.

De vereiste capability voor Email Sender instellen
De vereiste capability voor Email Sender instellen

Standaard ingesteld op manage_options zodat abonnees de mutatie niet kunnen gebruiken om willekeurige ontvangers te spammen. Selecteer (any logged-in user) om de controle uit te schakelen.

HTTP Client โ€” Vereiste capability voor toegang tot interne URL's

Sommige URL's verwijzen naar interne adressen (127.0.0.1, link-local-bereiken, cloud-metadata-endpoints, enz.) die interne services kunnen blootstellen als ze bereikt worden. Een nieuwe instelling onder Plugin Configuration > HTTP Client beperkt het bereiken van die adressen tot gebruikers met een specifieke WordPress-capability.

De vereiste capability voor toegang tot interne URL's instellen
De vereiste capability voor toegang tot interne URL's instellen

Standaard ingesteld op manage_options zodat niet-beheerders geen interne services kunnen bereiken via de HTTP Client-velden. Selecteer (any logged-in user) om de controle uit te schakelen.

Environment Variables โ€” denylist voor niet-beheerders

Het veld _env vereiste al een expliciete allow-list, en die lijst is standaard leeg. v18 voegt een extra veiligheidslaag toe voor niet-beheerders: zelfs als deze namen op de allow-list staan in de configuratie, wordt hun toegang geweigerd.

Altijd geweigerd (WordPress-geheimen):

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.

Ook geweigerd โ€” elke variabele waarvan de naam het volgende bevat: PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.

Beheerders hebben nog steeds volledige toegang.

โžก๏ธ Zie de sectie Beveiliging van de documentatie voor de volledige lijst.

๐ŸŒ Vertalingen: nieuwe Gemini-provider

De directive @strTranslate ondersteunt nu Google Gemini als vertaalprovider, naast ChatGPT, Claude, DeepL, DeepSeek, Google Translate, Mistral, OpenRouter en self-hosted LLM's.

Vertaal elk String-veld naar de gewenste taal:

{
  posts {
    title @strTranslate(
      from: "en",
      to: "fr",
      provider: gemini
    )
 
    content @strTranslate(
      from: "en",
      to: "fr",
      provider: gemini
    )
  }
}

De volgende Gemini-modellen worden ondersteund:

  • 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)

Configureer je Google API-sleutel (via Settings, wp-config.php of een omgevingsvariabele), kies een model en je kunt beginnen met vertalen.

โžก๏ธ Zie de referentiedocumentatie voor Gemini Translation.

โฑ๏ธ Vertalingen: time-outs voor Request en Connection

Het vertalen van een lang document via een externe provider kan traag zijn, en een vastgelopen upstream zou een PHP-worker bezet houden totdat PHP zelf het verzoek afbreekt โ€” wat resulteert in een generieke HTTP 502/504 of een lege pagina met "Maximum execution time exceeded".

v18 biedt twee time-outinstellingen onder Plugin Configuration > Translation:

  • Request timeout: maximale tijd (in seconden) om te wachten op de volledige response van de vertaalprovider.
  • Connection timeout: maximale tijd (in seconden) om te wachten bij het opzetten van de verbinding.
De time-outs voor Request en Connection instellen voor vertalingen
De time-outs voor Request en Connection instellen voor vertalingen

Stel beide waarden iets lager in dan de max_execution_time van je server, zodat een vastgelopen vertaling netjes mislukt met een gecontroleerde foutmelding in de logs in plaats van de generieke server-time-out te activeren. Als je vertalingen regelmatig een time-out geven, verhoog dan beide waarden en de max_execution_time van je server tegelijkertijd.

๐Ÿ› Bugfixes en beveiligingspatches

Naast de nieuwe functies hierboven levert v18.0 ook diverse bugfixes en patches voor een aantal beveiligingslekken. We raden je sterk aan zo snel mogelijk bij te werken naar v18.

Updaten

De release wordt nu uitgerold via de WordPress-plugindirectory en je klantenarchiefpagina. Update via je WordPress-beheerpaneel (Plugins โ†’ Updates) of download de nieuwste versie vanuit je account.

Zie de changelog voor de volledige lijst met wijzigingen.

Geniet van v18! ๐ŸŽ‰


Abonneer je op onze nieuwsbrief

Blijf op de hoogte van alle updates over Gato GraphQL.