Önbellekleme
ÖnbelleklemeCache Control

Cache Control

Included in the “Power Extensions” bundle

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-age değeri 0 olduğ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)

Önbellek kontrol politikası tanımlama

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.

Cache Control Listeleri
Cache Control Listeleri

Cache Control List düzenleyicisi

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 girişi

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.

Şema Yapılandırmasında Cache Control List seçimi