博客

🚀 Gato GraphQL v18.0 发布:解析查询缓存、安全加固与新 Gemini 翻译提供商

Leonardo Losoviz
作者:Leonardo Losoviz ·

Gato GraphQL v18.0 正式发布 🎉

本次发布处理速度大幅提升、内存使用量显著减少,支持将已解析的 GraphQL 查询缓存到磁盘以跳过重复的解析和编译工作,收紧了 Email SenderHTTP ClientEnvironment Variable 字段的默认 capability 检查,包含多项错误修复和安全补丁,并新增了 Gemini 翻译提供商以及翻译功能的可配置 RequestConnection 超时设置。

请继续阅读了解主要内容。

⚡ 将已解析的 GraphQL 查询缓存到磁盘

每个请求都需要解析 GraphQL 查询、对 schema 进行验证并构建执行计划。v18 现在可以将准备好的查询持久化到磁盘,并在后续运行时重新加载——完全跳过重复的解析和编译工作。

在 Settings 页面的 Server Configuration > Caching > Cache parsed GraphQL queries? 下启用此功能:

在 Settings 中启用已解析 GraphQL 查询的缓存
在 Settings 中启用已解析 GraphQL 查询的缓存

此功能缓存的是查询的准备处理(解析和编译),而非响应数据。关于响应的 HTTP 缓存,请参阅添加 HTTP 缓存

文件存储在插件缓存目录中。如果插件文件夹不可写,可以将缓存指向其他位置——请参阅覆盖缓存文件夹

➡️ 详情请参阅缓存已解析的 GraphQL 查询

⚡ 全面提速与轻量化

除解析查询缓存外,v18 还对插件内部进行了全面重构:所有 GraphQL 请求速度大幅提升,内存使用量显著减少。

性能提升是全局性的——适用于所有查询、所有指令、所有 persisted query,在大型 schema、长查询以及每页运行大量 GraphQL 请求的站点(例如:Headless WordPress、内部 API)上效果尤为明显。

之前遇到 PHP 内存限制或响应缓慢的大型站点将会感受到明显的差异,无需任何配置更改——只需更新插件即可。

🔒 安全默认值强化

三个方面的默认设置得到了加固,使插件开箱即更安全。

Email Sender — 所需 capability

_sendEmail mutation 现在可以限制为仅拥有特定 WordPress capability 的用户才能使用,在 Plugin Configuration > Email Sender 中进行配置。

设置 Email Sender 所需的 capability
设置 Email Sender 所需的 capability

默认值为 manage_options,防止订阅者使用该 mutation 向任意收件人发送垃圾邮件。选择 (any logged-in user) 可禁用此检查。

HTTP Client — 访问内部 URL 所需的 capability

某些 URL 会解析到内部地址(127.0.0.1、链路本地范围、云元数据端点等),访问这些地址可能会暴露内部服务。Plugin Configuration > HTTP Client 下的新设置将访问这些地址的权限限制为拥有特定 WordPress capability 的用户。

设置访问内部 URL 所需的 capability
设置访问内部 URL 所需的 capability

默认值为 manage_options,防止非管理员用户通过 HTTP Client 字段访问内部服务。选择 (any logged-in user) 可禁用此检查。

Environment Variables — 非管理员用户的拒绝列表

_env 字段已要求明确的 allow-list,且该列表默认为空。v18 为非管理员用户新增了额外的安全保障:即使这些名称已在配置的 allow-list 中,访问也会被拒绝。

始终拒绝(WordPress 密钥):

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.

同样拒绝——名称中包含以下内容的变量:PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.

管理员用户仍拥有完整访问权限。

➡️ 完整列表请参阅文档的安全部分

🌐 翻译:新增 Gemini 提供商

@strTranslate 指令现在支持将 Google Gemini 作为翻译提供商,与 ChatGPT、Claude、DeepL、DeepSeek、Google Translate、Mistral、OpenRouter 和自托管 LLM 并列。

将任意 String 字段翻译为所需语言:

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

以下 Gemini 模型受到支持:

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

配置您的 Google API 密钥(通过 Settings、wp-config.php 或环境变量),选择模型,即可开始翻译。

➡️ 请参阅 Gemini 翻译参考文档

⏱️ 翻译:Request 和 Connection 超时

通过第三方提供商翻译长文档可能耗时较长,若上游服务挂起,将会占用 PHP 工作进程直到 PHP 强制终止请求——导致通用 HTTP 502/504 错误或空白的「Maximum execution time exceeded」页面。

v18 在 Plugin Configuration > Translation 下新增了两个超时设置:

  • Request timeout: 等待翻译提供商返回完整响应的最长时间(秒)。
  • Connection timeout: 建立连接时等待的最长时间(秒)。
设置翻译的 Request timeout 和 Connection timeout
设置翻译的 Request timeout 和 Connection timeout

请将两个值设置为略低于服务器的 max_execution_time,以便翻译停滞时以可控错误的形式记录到日志中,而非触发通用服务器超时。如果您的翻译频繁超时,请同步提高_这两个_值以及服务器的 max_execution_time

🐛 错误修复与安全补丁

除上述新功能外,v18.0 还包含多项错误修复以及若干安全漏洞补丁。我们强烈建议尽快更新至 v18。

升级

本次发布正在通过 WordPress 插件目录和客户控制台推出。请在 WordPress 管理后台(插件 → 更新)中进行更新,或从您的账户下载最新版本。

完整变更列表请参阅 changelog

享受 v18! 🎉


订阅我们的新闻通讯

及时了解 Gato GraphQL 的所有更新。