Cache Control
GraphQL sunucusuna GET yöntemiyle queries çalıştırırken, GraphQL yanıtı standart HTTP önbelleklemeye 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; tek endpoint ve özel endpoint'ler için ise endpoint'e ?query={ GraphQL query } parametresi eklenerek çalışır.
Açıklama
HTTP önbellekleme, yanıtta max-age değerini içeren bir Cache-Control başlığı göndererek çalışır; bu değer, yanıtın ne kadar süre önbellekte tutulması gerektiğini belirtir.
Cache Control eklentisi, Cache Control Listeleri sunar; burada alanlar ve direktifler için özel max-age değerleri tanımlanır. Dolayısıyla, farklı alan ve direktif kombinasyonları içeren farklı queries, farklı bir max-age değeri üretir.
Yanıtın max-age değeri, GraphQL motoru tarafından otomatik olarak hesaplanır. Bu değer, istenen queries içindeki tüm alanlar ve direktifler arasındaki en düşük max-age değeridir (Cache Control Listesinde tanımlandığı şekilde); aşağıdaki durumların herhangi birinde ise no-store olur:
- herhangi bir mutation çalıştırıldığında
- herhangi bir alan veya direktifin
max-agedeğeri0olduğunda - bir Alan Erişimi Kontrolü kuralının herhangi bir alan veya direktif için kullanıcı durumunu kontrol etmesi gerektiğinde (bu durumda yanıt kullanıcıya özel olduğundan önbelleğe alınamaz)

Cache Control Listeleri
Siteye yeni bir "Cache Control List" Özel Gönderi Türü eklenir. Menüdeki "Cache Control Lists" sayfasından girişlere göz atabilir ve düzenleyicide yeni bir giriş eklemek için "Add New Cache Control List" seçeneğine tıklayabiliriz.


Her Cache Control List, aşağıdaki öğeleri içeren bir veya daha fazla giriş barındırır:
- GraphQL query'sinde yer aldıklarında seçilen max-age değerinin geçerli olmasını sağlayan alanlar ve direktifler
- max-age değeri

Cache Control List oluşturulduktan sonra, ilgili Şema Yapılandırmasını düzenleyerek ve "Cache Control Lists" bloğu altındaki listeden öğeyi seçerek endpoint'in bunu kullanmasını sağlayabiliriz.
