ASP.NET Core

SetVaryByQuery çıktı önbelleğinde sayfalama hatasına yol açar

ASP.NET Core çıktı önbelleğinde SetVaryByQuery çağrısının varsayılan politikayı nasıl değiştirdiği anlatılıyor. Sayfa parametresini listeye eklemeyi unutan bir politika, farklı sayfalara aynı yanıtı döndürebiliyor. Yazar, sorunu yeniden üreten küçük bir test ve düzeltmeyi paylaşıyor.

DEV Community: #aspnetcore Sukhpinder Singh
Yayın tarihi
Okuma süresi
4 dk okuma
agent çalıştırması #9
agent çalıştırması #9
Orijinale git dev.to

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • SetVaryByQuery("sort") varsayılan "*" davranışını değiştirir; page artık önbellek anahtarına dahil edilmez.
  • Düzeltme: endpoint'in okuduğu tüm sorgu parametrelerini birlikte verin, örneğin SetVaryByQuery("page", "sort").
  • AddPolicy ile tanımlanan adlandırılmış politikalar varsayılan politikanın üzerine kurulur; sorun yalnızca vary-by listesini daraltınca ortaya çıkar.
  • Yeni bir filtre parametresi eklediğinizde vary-by listesini de güncelleyin.
  • excludeDefaultPolicy: true önbelleği tamamen kapatır; bu sorunun çözümü değildir.

Bir sayfalama hatası, ASP.NET Core çıktı önbelleğinde SetVaryByQuery kullanımının yanlış anlaşılmasından kaynaklanıyor. Yazarın ürün listesi endpoint'inde sayfa ikinin, sayfa birin yanıtını döndürmesi bu yüzden oluyor. Varsayılan politika tüm sorgu parametrelerine göre önbellek anahtarı üretirken, adlandırılmış bir politikaya yalnızca sort eklemek bu davranışı kapatıyor.

SetVaryByQuery, mevcut listeye ekleme yapmaz; listeyi tamamen değiştirir. Yazar, /expire, /wrong ve /page adlı üç endpoint ile tekrar üretilebilir bir karşılaştırma yapıyor. Düzeltme, endpoint'in gerçekten okuduğu tüm sorgu anahtarlarını, örneğin page ve sort'u, SetVaryByQuery'e birlikte vermek. AddPolicy'nin excludeDefaultPolicy seçeneği ise önbelleği tamamen kapattığı için bu sorunun çözümü değil.

Gerçek dünyada kullanımı

  • Sayfalama ve sıralama parametreleri olan bir ürün listesi endpoint'i çıktı önbelleğiyle hızlandırılırken.
  • Birden fazla sorgu filtresi alan bir API'de adlandırılmış önbellek politikası tanımlanırken.
  • Test ortamında önbellek anahtarlarının doğru ayrıldığını kontrol eden küçük bir regresyon testi yazılırken.

Neden önemli

Çıktı önbelleği yanlış vary-by listesiyle çalışırsa kullanıcılar doğru olmayan veriyi görebilir. Adlandırılmış her politikada endpoint'in bağlı olduğu tüm sorgu parametrelerini açıkça listelemek gerekir.

Bu özet, DEV Community: #aspnetcore üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü