HTTP Önbellekleme Ekleme
Queries, GraphQL sunucusuna GET kullanılarak çalıştırıldığında (daha geleneksel POST yöntemi yerine), GraphQL yanıtı standart HTTP önbelleklemesine dayanarak istemci tarafında veya istemci ile sunucu arasındaki ara aşamalarda (CDN gibi) önbelleğe alınabilir.
Bu, persisted queries için doğal olarak çalışır; single endpoint ve custom endpoint'ler için ise endpoint'e ?query={ GraphQL query } parametresi eklenerek çalışabilir.
Yapılandırma bir önbellek kontrol listesi aracılığıyla oluşturulur ve şema yapılandırması üzerinden endpoint'e iletilir.
Endpoint'i GET ile Çalıştırma
Persisted queries, GraphQL sorgusunu sunucuda depoladıkları için (yani isteğin gövdesinde sağlanması gerekmez) GET ile çalıştırılmaya zaten uygundur.
Ancak single endpoint ve custom endpoint'ler için sorgu, endpoint URL'sine eklenen ?query=... parametresi altında sağlanmalıdır.
Örneğin, aşağıdaki GraphQL sorgusu:
{
posts {
id
title
url
author {
id
name
url
}
}
}...single endpoint'e karşı GET ile şu şekilde çalıştırılabilir:
https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }
Otomatik Max-Age Hesaplama
Yanıtın max-age değeri, endpoint'e atanan erişim kontrol listelerinden (şema yapılandırması aracılığıyla) otomatik olarak hesaplanır.
Bu değer, istenen sorgudaki tüm alanlar ve direktifler arasındaki en düşük max-age değeridir veya aşağıdaki durumlarda no-store olur:
- herhangi bir mutation çalıştırılırsa
- herhangi bir alan veya direktifin
max-agedeğeri0ise - bir erişim kontrol kuralının herhangi bir alan veya direktif için kullanıcı durumunu kontrol etmesi gerekiyorsa (bu durumda yanıt kullanıcıya özeldir, dolayısıyla önbelleğe alınamaz)
Varsayılan Max-Age
Belirli bir max-age atanmamış alanlar, Şema Yapılandırmasında tanımlanan varsayılan değeri kullanır:

Ayarlanmamışsa, Ayarlar sayfasındaki "Cache Control" sekmesinde tanımlanan varsayılan max-age değeri kullanılır. 86400 saniye olan bu değer Ayarlar'dan değiştirilebilir.
Örnek
Diyelim ki User türünün alanları için aşağıdaki max-age değer yapılandırmasına sahibiz:
name=>600url=>30
O zaman bu querynin yanıtı max-age değerine 86400 sahip olacaktır (çünkü displayName veya email yapılandırılmamış, bu nedenle varsayılan değeri kullanırlar):
query {
users {
displayName
email
}
}Bu querynin yanıtı max-age değerine 30 sahip olacaktır (yapılandırılmış tüm alanlar arasındaki en düşük değer olan url'ye karşılık gelir):
query {
user(by: {id: 1}) {
name
url
}
}Bu querynin yanıtı max-age değerine no-store sahip olacaktır (çünkü me alanı kullanıcı durumu gerektirir):
query {
me {
name
url
}
}Bu querynin yanıtı max-age değerine no-store sahip olacaktır (çünkü bir mutation çalıştırır):
mutation {
createPost {
id
}
}Tüm Önbellek Kontrol Listelerine Erişme
Eklenti menüsünde "Cache Control Lists" seçeneğine tıklandığında, oluşturulan tüm önbellek kontrol listelerinin listesi görüntülenir:

Yeni Bir Önbellek Kontrol Listesi Oluşturma
WordPress editörünü açmak için "Add New Cache Control List" düğmesine tıklayın:

Önbellek kontrol listesine bir başlık verin, alanlar ve direktiflerle girişler ekleyin ve bunlar için max-age değerini yapılandırın:

Hazır olduğunda Publish düğmesine tıklayın. Ardından yeni önbellek kontrol listesi şema yapılandırması için kullanılabilir hale gelir.
Cache Control Girişleri
Her Önbellek Kontrol Listesi, her biri aşağıdaki öğeleri içeren bir veya daha fazla girişten oluşur:
- Önbellekleme yapılandırılacak alanlar
- Önbellekleme yapılandırılacak direktifler
- Bunlar için
max-agedeğeri

Arayüzlerden Alan Seçme
Türlerin alanlarına ek olarak, arayüzlerden de alan seçebiliriz. Bu durumda max-age değeri, arayüzü uygulayan herhangi bir türden bu alanlar sorgulandığında uygulanır.

Önbellek Kontrol Listesini Açıklama
Önbellek kontrol listesine bir açıklama vermek için Belge ayarları panelindeki "Excerpt" alanını kullanın.
Daha fazla bilgi için API'ye açıklama ekleme kılavuzuna bakın.
Önbellek Kontrol Listesini Kullanma
Önbellek kontrol listesi oluşturulduktan sonra, Custom Endpoint veya Persisted Query'nin bunu kullanmasını sağlamak için ilgili Şema Yapılandırmasını düzenleyerek "Cache Control Lists" bloğundaki listeden ACL'yi seçebiliriz.

Yapılandırma özelleştirilmezse, Ayarlar sayfasında "Cache Control" sekmesi altında tanımlanan varsayılan Önbellek Kontrol Listeleri kullanılır:
