ASP.NET Core'da önbelleğe almaya genel bakış

Yayımlayanlar Rick Anderson ve Kirk Larkin

Bellek içi önbellek

Bellek içi önbelleğe alma, önbelleğe alınmış verileri depolamak için sunucu belleğini kullanır. Bu önbelleğe alma türü, oturum benzimi kullanan tek bir sunucu veya birden çok sunucu için uygundur. Oturum benzitesi, yapışkan oturumlar olarak da bilinir. Oturum benzimi, bir istemciden gelen isteklerin her zaman işlenmek üzere aynı sunucuya yönlendirildiğini gösterir.

Daha fazla bilgi için bkz. ASP.NET Core'da bellek içi önbelleğe alma ve Azure Uygulaması lication Gateway oturum benşimi sorunlarını giderme.

Dağıtılmış Önbellek

Uygulama bir bulutta veya sunucu grubunda barındırıldığında verileri bellekte depolamak için dağıtılmış önbellek kullanın. Önbellek, istekleri işleyen sunucular arasında paylaşılır. İstemci için önbelleğe alınmış veriler varsa, istemci gruptaki herhangi bir sunucu tarafından işlenen bir istek gönderebilir. ASP.NET Core, SQL Server, Redis ve NCache dağıtılmış önbellekleriyle çalışır.

Daha fazla bilgi için bkz . ASP.NET Core'da dağıtılmış önbelleğe alma.

Önbellek Etiketi Yardımcısı

İçeriği, Önbellek Etiketi Yardımcısı ile bir MVC görünümünden veya Razor Sayfasından önbelleğe alın. Önbellek Etiketi Yardımcısı, verileri depolamak için bellek içi önbelleğe alma kullanır.

Daha fazla bilgi için bkz . ASP.NET Core MVC'de Önbellek Etiketi Yardımcısı.

Dağıtılmış Önbellek Etiketi Yardımcısı

Dağıtılmış Önbellek Etiketi Yardımcısı ile dağıtılmış bulut veya Razor web grubu senaryolarındaki bir MVC görünümünden veya Sayfasından içeriği önbelleğe alın. Dağıtılmış Önbellek Etiketi Yardımcısı, verileri depolamak için SQL Server, Redis veya NCache kullanır.

Daha fazla bilgi için bkz . ASP.NET Core'da Dağıtılmış Önbellek Etiketi Yardımcısı.

Yanıtları Önbelleğe Alma

Yanıt önbelleğe alma ara yazılımı:

  • HTTP önbellek üst bilgilerine göre sunucu yanıtlarını önbelleğe almayı etkinleştirir. Standart HTTP önbelleğe alma semantiğini uygular. Ara sunucular gibi HTTP önbellek üst bilgilerini temel alan önbellekler.
  • Tarayıcılar genellikle önbelleğe almayı engelleyen istek üst bilgilerini ayarladığından, Sayfalar gibi Razor kullanıcı arabirimi uygulamaları için genellikle yararlı olmaz. ASP.NET Core 7.0 ve sonraki sürümlerde kullanılabilen çıktı önbelleğe alma, kullanıcı arabirimi uygulamalarından yararlanır. Çıkış önbelleğe alma ile yapılandırma, HTTP üst bilgilerinden bağımsız olarak nelerin önbelleğe alınması gerektiğine karar verir.
  • Önbelleğe alma koşullarının karşılandığı istemcilerden gelen genel GET veya HEAD API istekleri için yararlı olabilir.

Yanıt önbelleğe almayı test etmek için Fiddler'ı veya istek üst bilgilerini açıkça ayarlayabilen başka bir aracı kullanın. Üst bilgileri açıkça ayarlamak, önbelleğe alma testi için tercih edilir. Daha fazla bilgi için bkz. Sorun giderme.

Çıkış önbelleği

Çıkış önbelleğe alma ara yazılımı, HTTP yanıtlarının önbelleğe alınmasını sağlar. Çıktı önbelleğe alma, yanıt önbelleğe almadan aşağıdaki yollarla farklıdır:

  • Önbelleğe alma davranışı sunucuda yapılandırılabilir.

    Yanıt önbelleğe alma davranışı HTTP üst bilgileri tarafından tanımlanır. Örneğin, Chrome veya Edge ile bir web sitesini ziyaret ettiğinizde tarayıcı otomatik olarak bir Cache-control: max-age=0 üst bilgi gönderir. Bu üst bilgi, sunucu istemci tarafından sağlanan yönergeleri izlediğinden yanıt önbelleğe almayı etkin bir şekilde devre dışı bırakır. Sunucuda yeni bir önbelleğe alınmış yanıt olsa bile her istek için yeni bir yanıt döndürülür. Çıkış önbelleğe alma işlemiyle istemci, sunucuda yapılandırdığınız önbelleğe alma davranışını geçersiz kılmaz.

  • Önbellek depolama ortamı genişletilebilir.

    Bellek varsayılan olarak kullanılır. Yanıt önbelleğe alma işlemi bellekle sınırlıdır.

  • Seçili önbellek girdilerini program aracılığıyla geçersiz kılabilirsiniz.

    Yanıt önbelleğe alma işleminin HTTP üst bilgilerine bağımlılığı, önbellek girdilerini geçersiz hale getirmeniz için birkaç seçenek sunar.

  • Kaynak kilitleme, önbellek damgalama ve sürüde gök gürültüsü oluşturma riskini azaltır.

    Sık kullanılan bir önbellek girdisi iptal edildiğinde ve çok fazla istek aynı önbellek girdisini aynı anda yeniden doldurmaya çalıştığında önbellek damgalama işlemi gerçekleşir. Gök gürültüsü sürü benzerdir: önbellek girişinde olmayan aynı yanıt için istekler dizisi. Kaynak kilitleme, belirli bir yanıta yönelik tüm isteklerin önbelleği doldurmak için ilk isteği beklemesini sağlar. Yanıt önbelleğe alma işleminin kaynak kilitleme özelliği yoktur.

  • Önbellek yeniden doğrulama bant genişliği kullanımını en aza indirir.

    Önbellek yeniden doğrulama , sunucunun önbelleğe alınmış yanıt gövdesi yerine http 304 Not Modified durum kodu döndürebileceği anlamına gelir. Bu durum kodu, istemciye isteğin yanıtının daha önce alınan yanıttan değişmediğini bildirir. Yanıt önbelleğe alma, önbellek yeniden doğrulama gerçekleştirmez.

Bellek içi önbellek

Bellek içi önbelleğe alma, önbelleğe alınmış verileri depolamak için sunucu belleğini kullanır. Bu önbelleğe alma türü, oturum benzimi kullanan tek bir sunucu veya birden çok sunucu için uygundur. Oturum benzitesi, yapışkan oturumlar olarak da bilinir. Oturum benzimi, bir istemciden gelen isteklerin her zaman işlenmek üzere aynı sunucuya yönlendirildiğini gösterir.

Daha fazla bilgi için bkz. ASP.NET Core'da bellek içi önbelleğe alma ve Azure Uygulaması lication Gateway oturum benşimi sorunlarını giderme.

Dağıtılmış Önbellek

Uygulama bir bulutta veya sunucu grubunda barındırıldığında verileri bellekte depolamak için dağıtılmış önbellek kullanın. Önbellek, istekleri işleyen sunucular arasında paylaşılır. İstemci için önbelleğe alınmış veriler varsa, istemci gruptaki herhangi bir sunucu tarafından işlenen bir istek gönderebilir. ASP.NET Core, SQL Server, Redis ve NCache dağıtılmış önbellekleriyle çalışır.

Daha fazla bilgi için bkz . ASP.NET Core'da dağıtılmış önbelleğe alma.

Önbellek Etiketi Yardımcısı

İçeriği, Önbellek Etiketi Yardımcısı ile bir MVC görünümünden veya Razor Sayfasından önbelleğe alın. Önbellek Etiketi Yardımcısı, verileri depolamak için bellek içi önbelleğe alma kullanır.

Daha fazla bilgi için bkz . ASP.NET Core MVC'de Önbellek Etiketi Yardımcısı.

Dağıtılmış Önbellek Etiketi Yardımcısı

Dağıtılmış Önbellek Etiketi Yardımcısı ile dağıtılmış bulut veya Razor web grubu senaryolarındaki bir MVC görünümünden veya Sayfasından içeriği önbelleğe alın. Dağıtılmış Önbellek Etiketi Yardımcısı, verileri depolamak için SQL Server, Redis veya NCache kullanır.

Daha fazla bilgi için bkz . ASP.NET Core'da Dağıtılmış Önbellek Etiketi Yardımcısı.

Yanıtları Önbelleğe Alma

Yanıt önbelleğe alma ara yazılımı:

  • HTTP önbellek üst bilgilerine göre sunucu yanıtlarını önbelleğe almayı etkinleştirir. Standart HTTP önbelleğe alma semantiğini uygular. Ara sunucular gibi HTTP önbellek üst bilgilerini temel alan önbellekler.
  • Tarayıcılar genellikle önbelleğe almayı engelleyen istek üst bilgilerini ayarladığından, Sayfalar gibi Razor kullanıcı arabirimi uygulamaları için genellikle yararlı olmaz. ASP.NET Core 7.0 ve sonraki sürümlerde kullanılabilen çıktı önbelleğe alma, kullanıcı arabirimi uygulamalarından yararlanır. Çıkış önbelleğe alma ile yapılandırma, HTTP üst bilgilerinden bağımsız olarak nelerin önbelleğe alınması gerektiğine karar verir.
  • Önbelleğe alma koşullarının karşılandığı istemcilerden gelen genel GET veya HEAD API istekleri için yararlı olabilir.

Yanıt önbelleğe almayı test etmek için Fiddler'ı veya istek üst bilgilerini açıkça ayarlayabilen başka bir aracı kullanın. Üst bilgileri açıkça ayarlamak, önbelleğe alma testi için tercih edilir. Daha fazla bilgi için bkz. Sorun giderme.

Çıkış önbelleği

Çıktı önbelleğe alma .NET 7 ve sonraki sürümlerde kullanılabilir.