Blog

๐Ÿš€ Rilis Gato GraphQL v18.0: Cache query yang sudah di-parse, keamanan diperkuat, dan penyedia terjemahan Gemini baru

Leonardo Losoviz
Oleh Leonardo Losoviz ยท

Gato GraphQL v18.0 telah hadir ๐ŸŽ‰

Rilis ini jauh lebih cepat dan menggunakan jauh lebih sedikit memori, memungkinkan Anda men-cache query GraphQL yang sudah di-parse ke disk untuk melewati pekerjaan parse dan kompilasi berulang, memperketat pemeriksaan capability default untuk field Email Sender, HTTP Client, dan Environment Variable, menyertakan berbagai bug fix dan beberapa patch keamanan, serta menambahkan penyedia terjemahan Gemini baru ditambah timeout Request dan Connection yang dapat dikonfigurasi untuk terjemahan.

Baca terus untuk melihat sorotan-sorotannya.

โšก Cache query GraphQL yang sudah di-parse ke disk

Setiap permintaan harus mem-parse query GraphQL, memvalidasinya terhadap skema, dan membangun rencana eksekusi. v18 kini dapat menyimpan query yang sudah disiapkan ke disk dan memuatnya kembali pada sesi berikutnya โ€” melewati sepenuhnya pekerjaan parse dan kompilasi berulang.

Aktifkan di halaman Settings, di bawah Server Configuration > Caching > Cache parsed GraphQL queries?:

Mengaktifkan cache untuk query GraphQL yang sudah di-parse di Settings
Mengaktifkan cache untuk query GraphQL yang sudah di-parse di Settings

Ini men-cache persiapan query (parse dan kompilasi), bukan data respons. Untuk HTTP caching dari respons, lihat Menambahkan HTTP caching.

File disimpan di direktori cache plugin. Jika folder plugin tidak dapat ditulis, Anda dapat mengarahkan cache ke tempat lain โ€” lihat Mengganti folder cache.

โžก๏ธ Detail lengkap di Meng-cache query GraphQL yang sudah di-parse.

โšก Lebih cepat dan lebih ringan โ€” secara menyeluruh

Di luar cache query yang sudah di-parse, internal plugin telah dirombak total di v18: setiap permintaan GraphQL jauh lebih cepat, dan mengonsumsi jauh lebih sedikit memori.

Peningkatannya bersifat global โ€” berlaku untuk setiap query, setiap directive, setiap persisted query โ€” dan sangat terlihat pada skema besar, query panjang, dan situs yang menjalankan banyak permintaan GraphQL per halaman (misalnya headless WordPress, API internal).

Situs-situs besar yang sebelumnya mengalami batasan memori PHP atau waktu respons yang lambat seharusnya merasakan perbedaan nyata, tanpa perubahan konfigurasi apa pun โ€” cukup perbarui pluginnya.

๐Ÿ”’ Default keamanan yang diperkuat

Tiga area mendapatkan default yang lebih ketat sehingga plugin lebih aman secara bawaan.

Email Sender โ€” Capability yang diperlukan

Mutation _sendEmail kini dapat dibatasi hanya untuk pengguna dengan capability WordPress tertentu, dikonfigurasi di bawah Plugin Configuration > Email Sender.

Mengatur capability yang diperlukan untuk Email Sender
Mengatur capability yang diperlukan untuk Email Sender

Default ke manage_options agar subscriber tidak dapat menggunakan mutation untuk mengirim spam ke penerima sembarang. Pilih (any logged-in user) untuk menonaktifkan pemeriksaan.

HTTP Client โ€” Capability yang diperlukan untuk mengakses URL internal

Beberapa URL mengarah ke alamat internal (127.0.0.1, rentang link-local, endpoint cloud-metadata, dll.) yang dapat mengekspos layanan internal jika diakses. Pengaturan baru di bawah Plugin Configuration > HTTP Client membatasi penargetan alamat tersebut hanya untuk pengguna dengan capability WordPress tertentu.

Mengatur capability yang diperlukan untuk mengakses URL internal
Mengatur capability yang diperlukan untuk mengakses URL internal

Default ke manage_options agar pengguna non-admin tidak dapat menjangkau layanan internal melalui field HTTP Client. Pilih (any logged-in user) untuk menonaktifkan pemeriksaan.

Environment Variables โ€” denylist untuk pengguna non-admin

Field _env sudah memerlukan allow-list eksplisit, dan daftar tersebut kosong secara default. v18 menambahkan jaring pengaman tambahan untuk pengguna non-admin: meskipun nama-nama ini terdapat dalam allow-list di konfigurasi, akses mereka tetap ditolak.

Selalu ditolak (rahasia 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.

Juga ditolak โ€” variabel apa pun yang namanya mengandung: PASSWORD, PASSWD, SECRET, PRIVATE_KEY, API_KEY, APIKEY, ACCESS_KEY, ACCESS_TOKEN, AUTH_TOKEN, BEARER, CREDENTIAL, SALT.

Pengguna admin tetap memiliki akses penuh.

โžก๏ธ Lihat bagian Security di dokumentasi untuk daftar lengkapnya.

๐ŸŒ Terjemahan: penyedia Gemini baru

Directive @strTranslate kini mendukung Google Gemini sebagai penyedia terjemahan, bersama ChatGPT, Claude, DeepL, DeepSeek, Google Translate, Mistral, OpenRouter, dan LLM yang di-host sendiri.

Terjemahkan field String apa pun ke bahasa yang diinginkan:

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

Model Gemini berikut didukung:

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

Konfigurasikan API key Google Anda (melalui Settings, wp-config.php, atau environment variable), pilih model, dan Anda siap untuk menerjemahkan.

โžก๏ธ Lihat dokumentasi referensi Gemini Translation.

โฑ๏ธ Terjemahan: timeout Request dan Connection

Menerjemahkan dokumen panjang melalui penyedia pihak ketiga bisa memakan waktu lama, dan upstream yang macet akan menahan worker PHP hingga PHP sendiri mematikan permintaan โ€” menghasilkan HTTP 502 / 504 generik atau halaman kosong "Maximum execution time exceeded".

v18 mengekspos dua pengaturan timeout di bawah Plugin Configuration > Translation:

  • Request timeout: waktu maksimum (dalam detik) untuk menunggu respons penuh dari penyedia terjemahan.
  • Connection timeout: waktu maksimum (dalam detik) untuk menunggu saat membuat koneksi.
Mengatur Request timeout dan Connection timeout untuk terjemahan
Mengatur Request timeout dan Connection timeout untuk terjemahan

Pertahankan kedua nilai sedikit di bawah max_execution_time server Anda agar terjemahan yang macet gagal dengan bersih dengan error terkontrol di log alih-alih memicu timeout server generik. Jika terjemahan Anda secara rutin kehabisan waktu, naikkan kedua nilai ini dan max_execution_time server Anda secara bersamaan.

๐Ÿ› Bug fix dan patch keamanan

Selain fitur-fitur baru di atas, v18.0 juga menyertakan berbagai bug fix dan menambal beberapa kerentanan keamanan. Kami sangat menyarankan untuk segera memperbarui ke v18.

Pembaruan

Rilis ini sedang diluncurkan sekarang melalui direktori plugin WordPress dan dashboard pelanggan Anda. Perbarui dari admin WordPress Anda (Plugins โ†’ Updates), atau unduh versi terbaru dari akun Anda.

Lihat changelog untuk daftar lengkap perubahan.

Selamat menikmati v18! ๐ŸŽ‰


Berlangganan newsletter kami

Tetap update dengan semua pembaruan Gato GraphQL.