🚀 เปิดตัว Gato GraphQL v18.0: แคช parsed query, เสริมความปลอดภัย และผู้ให้บริการแปลภาษา Gemini ใหม่
Gato GraphQL v18.0 พร้อมให้ใช้งานแล้ว 🎉
รุ่นนี้เร็วขึ้นอย่างเห็นได้ชัดและใช้หน่วยความจำน้อยลงอย่างมาก รองรับการแคช parsed GraphQL queries ลงดิสก์เพื่อข้ามขั้นตอน parse และ compile ที่ซ้ำซ้อน ปรับปรุงการตรวจสอบ capability เริ่มต้นให้เข้มงวดขึ้นสำหรับฟิลด์ Email Sender, HTTP Client และ Environment Variable พร้อมแก้ไขบั๊กหลายรายการและแพตช์ความปลอดภัย และเพิ่มผู้ให้บริการแปลภาษา Gemini ใหม่พร้อมRequest และ Connection timeout ที่กำหนดได้สำหรับการแปลภาษา
อ่านต่อเพื่อดูไฮไลต์สำคัญ
⚡ แคช parsed GraphQL queries ลงดิสก์
ทุกคำขอต้องทำการ parse GraphQL query, ตรวจสอบความถูกต้องกับ schema และสร้างแผนการประมวลผล v18 สามารถบันทึก query ที่เตรียมไว้ลงดิสก์และโหลดซ้ำในการทำงานครั้งถัดไปได้ ช่วยข้ามขั้นตอน parse และ compile ที่ซ้ำซ้อนได้ทั้งหมด
เปิดใช้งานได้ที่หน้า Settings ใต้ Server Configuration > Caching > Cache parsed GraphQL queries?:

การแคชนี้คือการเตรียม query (parse และ compile) ไม่ใช่ข้อมูล response สำหรับการแคช HTTP ของ response ดูที่ Adding HTTP caching
ไฟล์จะถูกเก็บไว้ในไดเรกทอรีแคชของปลั๊กอิน หากโฟลเดอร์ปลั๊กอินไม่สามารถเขียนได้ คุณสามารถกำหนดตำแหน่งแคชใหม่ได้ — ดูที่ Overriding the cache folder
➡️ รายละเอียดทั้งหมดใน Caching the parsed GraphQL queries
⚡ เร็วขึ้นและเบาขึ้น — ครอบคลุมทุกด้าน
นอกจาก parsed-query cache แล้ว ใน v18 ระบบภายในของปลั๊กอินได้รับการปรับปรุงครั้งใหญ่: ทุก GraphQL request เร็วขึ้นอย่างเห็นได้ชัด และใช้หน่วยความจำน้อยลงอย่างมาก
การปรับปรุงนี้เป็นแบบครอบคลุม ใช้ได้กับทุก query, ทุก directive, ทุก persisted query และเห็นผลชัดเจนเป็นพิเศษบน schema ขนาดใหญ่, query ที่ยาว และเว็บไซต์ที่ทำงานกับ GraphQL requests จำนวนมากต่อหน้า (เช่น headless WordPress, internal APIs)
เว็บไซต์ขนาดใหญ่ที่เคยพบปัญหาข้อจำกัดหน่วยความจำ PHP หรือ response ที่ช้า จะรู้สึกถึงความแตกต่างได้จริง โดยไม่ต้องเปลี่ยนการตั้งค่าใดๆ เพียงแค่อัปเดตปลั๊กอิน
🔒 เสริมความปลอดภัยเริ่มต้น
สามด้านได้รับการตั้งค่าเริ่มต้นที่เข้มงวดขึ้นเพื่อให้ปลั๊กอินปลอดภัยมากขึ้นตั้งแต่เริ่มต้น
Email Sender — capability ที่จำเป็น
mutation _sendEmail สามารถจำกัดให้เฉพาะผู้ใช้ที่มี WordPress capability ที่กำหนด ซึ่งตั้งค่าได้ใต้ Plugin Configuration > Email Sender

ค่าเริ่มต้นคือ manage_options เพื่อป้องกันไม่ให้ subscribers ใช้ mutation ส่งสแปมไปยังผู้รับที่ต้องการ เลือก (any logged-in user) เพื่อปิดการตรวจสอบ
HTTP Client — capability ที่จำเป็นสำหรับเข้าถึง internal URLs
URL บางรายการอาจชี้ไปยังที่อยู่ภายใน (127.0.0.1, ช่วง link-local, cloud-metadata endpoints เป็นต้น) ซึ่งอาจเปิดเผย internal services หากเข้าถึงได้ การตั้งค่าใหม่ใต้ Plugin Configuration > HTTP Client จำกัดการเข้าถึงที่อยู่เหล่านั้นให้เฉพาะผู้ใช้ที่มี WordPress capability ที่กำหนด

ค่าเริ่มต้นคือ manage_options เพื่อป้องกันไม่ให้ผู้ใช้ที่ไม่ใช่ admin เข้าถึง internal services ผ่าน HTTP Client fields เลือก (any logged-in user) เพื่อปิดการตรวจสอบ
Environment Variables — denylist สำหรับผู้ใช้ที่ไม่ใช่ admin
ฟิลด์ _env ต้องการ allow-list ที่ระบุชัดเจนอยู่แล้ว และรายการนั้นว่างเปล่าตามค่าเริ่มต้น v18 เพิ่มตาข่ายนิรภัยเพิ่มเติมสำหรับผู้ใช้ที่ไม่ใช่ admin: แม้ว่าชื่อเหล่านี้จะอยู่ใน allow-list ของการตั้งค่า พวกเขาก็จะถูกปฏิเสธการเข้าถึง
รายการที่ถูกปฏิเสธเสมอ (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.
รายการที่ถูกปฏิเสธด้วย — ตัวแปรที่ชื่อมีคำว่า: PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.
ผู้ใช้ที่เป็น admin ยังคงมีสิทธิ์เข้าถึงเต็มรูปแบบ
➡️ ดูรายการทั้งหมดได้ที่ ส่วน Security ในเอกสาร
🌐 การแปลภาษา: ผู้ให้บริการ Gemini ใหม่
directive @strTranslate รองรับ Google Gemini เป็นผู้ให้บริการแปลภาษาแล้ว เพิ่มเติมจาก ChatGPT, Claude, DeepL, DeepSeek, Google Translate, Mistral, OpenRouter และ self-hosted LLMs
แปลฟิลด์ String ใดก็ได้เป็นภาษาที่ต้องการ:
{
posts {
title @strTranslate(
from: "en",
to: "fr",
provider: gemini
)
content @strTranslate(
from: "en",
to: "fr",
provider: gemini
)
}
}Gemini models ที่รองรับมีดังนี้:
- 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 key ของคุณ (ผ่าน Settings, wp-config.php หรือ environment variable) เลือก model แล้วคุณก็พร้อมแปลภาษาได้เลย
➡️ ดูที่ เอกสาร Gemini Translation reference
⏱️ การแปลภาษา: Request และ Connection timeouts
การแปลเอกสารยาวผ่านผู้ให้บริการ third-party อาจใช้เวลานาน และหาก upstream ค้างจะทำให้ PHP worker ถูกครอบครองจนกว่า PHP จะยุติคำขอเอง ส่งผลให้เกิด HTTP 502/504 ทั่วไป หรือหน้าว่างที่แสดง "Maximum execution time exceeded"
v18 เปิดเผยการตั้งค่า timeout สองรายการใต้ Plugin Configuration > Translation:
- Request timeout: เวลาสูงสุด (เป็นวินาที) ที่จะรอ response ทั้งหมดจากผู้ให้บริการแปลภาษา
- Connection timeout: เวลาสูงสุด (เป็นวินาที) ที่จะรอเมื่อสร้างการเชื่อมต่อ

ตั้งค่าทั้งสองค่าให้ต่ำกว่า max_execution_time ของเซิร์ฟเวอร์เล็กน้อยเพื่อให้การแปลที่ค้างอยู่ล้มเหลวอย่างสะอาดด้วย error ที่ควบคุมได้ใน logs แทนที่จะทริกเกอร์ server timeout ทั่วไป หากการแปลของคุณหมดเวลาเป็นประจำ ให้เพิ่ม_ทั้งสอง_ค่าและ max_execution_time ของเซิร์ฟเวอร์ควบคู่กัน
🐛 แก้ไขบั๊กและแพตช์ความปลอดภัย
นอกจากฟีเจอร์ใหม่ข้างต้นแล้ว v18.0 ยังมีแก้ไขบั๊กหลายรายการและแพตช์ช่องโหว่ความปลอดภัยบางรายการ เราแนะนำอย่างยิ่งให้อัปเดตเป็น v18 โดยเร็วที่สุด
อัปเกรด
การเปิดตัวกำลังดำเนินการผ่าน WordPress plugin directory และ customer dashboard ของคุณ อัปเดตจาก WordPress admin (Plugins → Updates) หรือดาวน์โหลดเวอร์ชันล่าสุดจากบัญชีของคุณ
ดูรายการเปลี่ยนแปลงทั้งหมดได้ใน changelog
สนุกกับ v18! 🎉