Bagikan melalui


Gambaran umum caching di ASP.NET Core

Catatan

Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.

Peringatan

Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.

Penting

Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.

Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.

Oleh Rick Anderson dan Tom Dykstra

Penembolokan memori

Penembolokan memori menggunakan memori server untuk menyimpan data yang di-cache. Jenis caching ini cocok untuk satu server atau beberapa server yang menggunakan afinitas sesi. Afinitas sesi juga dikenal sebagai sesi lengket. Afinitas sesi berarti bahwa permintaan dari klien selalu dirutekan ke server yang sama untuk diproses.

Untuk informasi selengkapnya, lihat Cache dalam memori di ASP.NET Core dan Pemecahan masalah afinitas sesi pada Azure Application Gateway.

Cache Terdistribusi

Gunakan cache terdistribusi untuk menyimpan data saat aplikasi dihosting di cloud atau farm server. Cache dibagikan di seluruh server yang memproses permintaan. Klien dapat mengirimkan permintaan yang ditangani oleh server mana pun dalam grup jika data yang di-cache untuk klien tersedia. ASP.NET Core berfungsi dengan cache terdistribusi SQL Server, Redis, dan NCache .

Untuk informasi selengkapnya, lihat Cache terdistribusi di ASP.NET Core.

HybridCache

HybridCache API menjembatani beberapa celah di IDistributedCache API dan IMemoryCache API. HybridCache adalah kelas abstrak dengan implementasi default yang menangani sebagian besar aspek penyimpanan ke cache dan mengambil dari cache.

Fitur

HybridCache memiliki fitur berikut yang tidak dimiliki API lain:

  • API terpadu untuk caching dalam proses dan di luar proses.

    HybridCache dirancang sebagai pengganti drop-in untuk penggunaan IDistributedCache dan IMemoryCache yang sudah ada, dan menyediakan API yang sederhana untuk menambahkan kode penembolokan baru. Jika aplikasi memiliki IDistributedCache implementasi, layanan HybridCache menggunakannya untuk caching sekunder. Strategi caching dua tingkat ini memungkinkan HybridCache untuk memberikan kecepatan cache dalam memori dan ketahanan cache terdistribusi atau persisten.

  • Perlindungan dari serbuan.

    Cache stampede terjadi ketika entri cache yang sering digunakan dicabut, dan terlalu banyak permintaan mencoba untuk mengisi ulang entri cache yang sama secara bersamaan. HybridCache menggabungkan operasi bersamaan, memastikan bahwa semua permintaan untuk respons tertentu menunggu permintaan pertama mengisi cache.

  • Serialisasi yang dapat dikonfigurasi.

    Serialisasi dikonfigurasi sebagai bagian dari pendaftaran layanan, dengan dukungan untuk serializer yang spesifik pada jenis dan yang umum melalui metode WithSerializer dan WithSerializerFactory, yang dihubungkan dari pemanggilan AddHybridCache. Secara default, layanan menangani string dan byte[] secara internal, dan menggunakan System.Text.Json untuk yang lain. Ini dapat dikonfigurasi untuk jenis serializer lainnya, seperti protobuf atau XML.

Untuk melihat kesederhanaan relatif dari API HybridCache, bandingkan kode yang menggunakannya dengan kode yang menggunakan IDistributedCache. Berikut adalah contoh tampilan penggunaan IDistributedCache :

public class SomeService(IDistributedCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        var key = $"someinfo:{name}:{id}"; // Unique key for this combination.
        var bytes = await cache.GetAsync(key, token); // Try to get from cache.
        SomeInformation info;
        if (bytes is null)
        {
            // Cache miss; get the data from the real source.
            info = await SomeExpensiveOperationAsync(name, id, token);

            // Serialize and cache it.
            bytes = SomeSerializer.Serialize(info);
            await cache.SetAsync(key, bytes, token);
        }
        else
        {
            // Cache hit; deserialize it.
            info = SomeSerializer.Deserialize<SomeInformation>(bytes);
        }
        return info;
    }

    // This is the work we're trying to cache.
    private async Task<SomeInformation> SomeExpensiveOperationAsync(string name, int id,
        CancellationToken token = default)
    { /* ... */ }
}

Itu banyak pekerjaan yang harus dilakukan dengan benar setiap kali, termasuk hal-hal seperti serialisasi. Dalam skenario "cache miss", Anda mungkin menghadapi beberapa utas yang berjalan bersamaan, semuanya mengalami cache miss, semuanya mengambil data inti, semuanya menserialisasikannya, dan semuanya mengirim data tersebut ke cache.

Berikut kode yang setara menggunakan HybridCache:

public class SomeService(HybridCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        return await cache.GetOrCreateAsync(
            $"someinfo:{name}:{id}", // Unique key for this entry.
            async cancel => await SomeExpensiveOperationAsync(name, id, cancel),
            token: token
        );
    }
}

Kode lebih sederhana dan pustaka memberikan perlindungan dari serangan mendadak serta fitur lain yang IDistributedCache tidak.

Kompatibilitas

Pustaka HybridCache mendukung runtime .NET yang lebih lama, hingga .NET Framework 4.7.2 dan .NET Standard 2.0.

Sumber Daya Tambahan:

Untuk informasi selengkapnya, lihat sumber daya berikut:

Pembuatan cache respons

Middleware penyimpanan sementara respons

  • Mengaktifkan cache respons server berdasarkan pada header cache HTTP. Menerapkan semantik cache HTTP standar. Cache berdasarkan header cache HTTP seperti yang dilakukan proksi.
  • Biasanya tidak bermanfaat untuk aplikasi UI seperti Razor Pages karena browser umumnya menetapkan header permintaan yang mencegah pencachingan. Penyimpanan output, yang tersedia di .NET 7 atau yang lebih baru, menguntungkan aplikasi UI. Dengan caching output, konfigurasi memutuskan apa yang harus di-cache tanpa bergantung pada header HTTP.
  • Mungkin bermanfaat untuk permintaan API GET atau HEAD publik dari klien di mana Kondisi penembolokan terpenuhi.

Untuk menguji penyimpanan cache respons, gunakan Fiddler, atau alat lain yang dapat secara eksplisit mengatur header permintaan. Mengatur header secara eksplisit lebih disukai untuk menguji caching. Untuk informasi selengkapnya, lihat Pemecahan masalah.

Untuk informasi selengkapnya, lihat Cache respons di ASP.NET Core.

Penggunaan cache untuk output

Middleware penembolokan output memungkinkan penembolokan respons HTTP. Penembolokan output berbeda dari penembolokan respons dengan cara berikut:

  • Perilaku cache dapat dikonfigurasi di server.

    Perilaku penembolokan respons ditentukan oleh header HTTP. Misalnya, saat Anda mengunjungi situs web dengan Chrome atau Edge, browser secara otomatis mengirim Cache-control: max-age=0 header. Header ini secara efektif menonaktifkan penyimpanan sementara respons, karena server mengikuti instruksi yang disediakan oleh klien. Respons baru dikembalikan untuk setiap permintaan, bahkan jika server memiliki respons cache baru. Dengan cache output, klien tidak mengubah perilaku cache yang Anda konfigurasikan di server.

  • Media penyimpanan cache dapat diperluas.

    Memori digunakan secara default. Penyimpanan sementara respons terbatas di memori.

  • Anda dapat membatalkan entri singgahan yang dipilih melalui pemrograman.

    Ketergantungan caching respons pada header HTTP membuat Anda memiliki sedikit opsi untuk menghapus entri cache.

  • Penguncian sumber daya mengurangi risiko serbuan cache dan efek kawanan serempak.

    Cache stampede terjadi ketika entri cache yang sering digunakan dicabut, dan terlalu banyak permintaan mencoba untuk mengisi ulang entri cache yang sama secara bersamaan. Thundering herd serupa: gelombang permintaan untuk respons yang sama yang belum ada dalam entri cache. Penguncian sumber daya memastikan bahwa semua permintaan untuk respons tertentu menunggu permintaan pertama mengisi cache. Penyimpanan sementara respons tidak memiliki fitur penguncian sumber daya.

  • Validasi ulang cache meminimalkan penggunaan bandwidth.

    Validasi ulang cache berarti server dapat mengembalikan 304 Not Modified kode status HTTP alih-alih isi respons yang di-cache. Kode status ini memberi tahu klien bahwa respons terhadap permintaan tidak berubah dari apa yang diterima sebelumnya. Penembolokan respons tidak melakukan validasi ulang cache.

Untuk informasi lebih lanjut, lihat Middleware caching output di ASP.NET Core.

Pembantu Tag Cache

Cache konten dari tampilan MVC atau Razor Halaman dengan Pembantu Tag Cache. Pembantu Tag Cache menggunakan penembolokan dalam memori untuk menyimpan data.

Untuk informasi selengkapnya, lihat Pembantu Tag Cache di ASP.NET Core MVC.

Pembantu Tag Cache Terdistribusi

Cache-kan konten dari tampilan MVC atau Razor halaman dalam skenario cloud terdistribusi atau farm web menggunakan Distributed Cache Tag Helper. Distributed Cache Tag Helper menggunakan SQL Server, Redis, atau NCache untuk menyimpan data.

Untuk informasi selengkapnya, lihat Pembantu Tag Cache Terdistribusi di ASP.NET Core.

Penembolokan memori

Penembolokan memori menggunakan memori server untuk menyimpan data yang di-cache. Jenis caching ini cocok untuk satu server atau beberapa server yang menggunakan afinitas sesi. Afinitas sesi juga dikenal sebagai sesi lengket. Afinitas sesi berarti bahwa permintaan dari klien selalu dirutekan ke server yang sama untuk diproses.

Untuk informasi selengkapnya, lihat Cache dalam memori di ASP.NET Core dan Pemecahan masalah afinitas sesi pada Azure Application Gateway.

Cache Terdistribusi

Gunakan cache terdistribusi untuk menyimpan data saat aplikasi dihosting di cloud atau farm server. Cache dibagikan di seluruh server yang memproses permintaan. Klien dapat mengirimkan permintaan yang ditangani oleh server mana pun dalam grup jika data yang di-cache untuk klien tersedia. ASP.NET Core berfungsi dengan cache terdistribusi SQL Server, Redis, dan NCache .

Untuk informasi selengkapnya, lihat Cache terdistribusi di ASP.NET Core.

HybridCache

HybridCache API menjembatani beberapa celah di IDistributedCache API dan IMemoryCache API. HybridCache adalah kelas abstrak dengan implementasi default yang menangani sebagian besar aspek penyimpanan ke cache dan mengambil dari cache.

Fitur

HybridCache memiliki fitur berikut yang tidak dimiliki API lain:

  • API terpadu untuk caching dalam proses dan di luar proses.

    HybridCache dirancang sebagai pengganti drop-in untuk penggunaan IDistributedCache dan IMemoryCache yang sudah ada, dan menyediakan API yang sederhana untuk menambahkan kode penembolokan baru. Jika aplikasi memiliki IDistributedCache implementasi, layanan HybridCache menggunakannya untuk caching sekunder. Strategi caching dua tingkat ini memungkinkan HybridCache untuk memberikan kecepatan cache dalam memori dan ketahanan cache terdistribusi atau persisten.

  • Perlindungan dari serbuan.

    Cache stampede terjadi ketika entri cache yang sering digunakan dicabut, dan terlalu banyak permintaan mencoba untuk mengisi ulang entri cache yang sama secara bersamaan. HybridCache menggabungkan operasi bersamaan, memastikan bahwa semua permintaan untuk respons tertentu menunggu permintaan pertama mengisi cache.

  • Serialisasi yang dapat dikonfigurasi.

    Serialisasi dikonfigurasi sebagai bagian dari pendaftaran layanan, dengan dukungan untuk serializer yang spesifik pada jenis dan yang umum melalui metode WithSerializer dan WithSerializerFactory, yang dihubungkan dari pemanggilan AddHybridCache. Secara default, layanan menangani string dan byte[] secara internal, dan menggunakan System.Text.Json untuk yang lain. Ini dapat dikonfigurasi untuk jenis serializer lainnya, seperti protobuf atau XML.

Untuk melihat kesederhanaan relatif dari API HybridCache, bandingkan kode yang menggunakannya dengan kode yang menggunakan IDistributedCache. Berikut adalah contoh tampilan penggunaan IDistributedCache :

public class SomeService(IDistributedCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        var key = $"someinfo:{name}:{id}"; // Unique key for this combination.
        var bytes = await cache.GetAsync(key, token); // Try to get from cache.
        SomeInformation info;
        if (bytes is null)
        {
            // Cache miss; get the data from the real source.
            info = await SomeExpensiveOperationAsync(name, id, token);

            // Serialize and cache it.
            bytes = SomeSerializer.Serialize(info);
            await cache.SetAsync(key, bytes, token);
        }
        else
        {
            // Cache hit; deserialize it.
            info = SomeSerializer.Deserialize<SomeInformation>(bytes);
        }
        return info;
    }

    // This is the work we're trying to cache.
    private async Task<SomeInformation> SomeExpensiveOperationAsync(string name, int id,
        CancellationToken token = default)
    { /* ... */ }
}

Itu banyak pekerjaan yang harus dilakukan dengan benar setiap kali, termasuk hal-hal seperti serialisasi. Dalam skenario "cache miss", Anda mungkin menghadapi beberapa utas yang berjalan bersamaan, semuanya mengalami cache miss, semuanya mengambil data inti, semuanya menserialisasikannya, dan semuanya mengirim data tersebut ke cache.

Berikut kode yang setara menggunakan HybridCache:

public class SomeService(HybridCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        return await cache.GetOrCreateAsync(
            $"someinfo:{name}:{id}", // Unique key for this entry.
            async cancel => await SomeExpensiveOperationAsync(name, id, cancel),
            token: token
        );
    }
}

Kode lebih sederhana dan pustaka memberikan perlindungan dari serangan mendadak serta fitur lain yang IDistributedCache tidak.

Kompatibilitas

Pustaka HybridCache mendukung runtime .NET yang lebih lama, hingga .NET Framework 4.7.2 dan .NET Standard 2.0.

Sumber Daya Tambahan:

Untuk informasi selengkapnya, lihat sumber daya berikut:

Pembantu Tag Cache

Cache konten dari tampilan MVC atau Razor Halaman dengan Pembantu Tag Cache. Pembantu Tag Cache menggunakan penembolokan dalam memori untuk menyimpan data.

Untuk informasi selengkapnya, lihat Pembantu Tag Cache di ASP.NET Core MVC.

Pembantu Tag Cache Terdistribusi

Cache-kan konten dari tampilan MVC atau Razor halaman dalam skenario cloud terdistribusi atau farm web menggunakan Distributed Cache Tag Helper. Distributed Cache Tag Helper menggunakan SQL Server, Redis, atau NCache untuk menyimpan data.

Untuk informasi selengkapnya, lihat Pembantu Tag Cache Terdistribusi di ASP.NET Core.

Pembuatan cache respons

Middleware penyimpanan sementara respons

  • Mengaktifkan cache respons server berdasarkan pada header cache HTTP. Menerapkan semantik cache HTTP standar. Cache berdasarkan header cache HTTP seperti yang dilakukan proksi.
  • Biasanya tidak bermanfaat untuk aplikasi UI seperti Razor Pages karena browser umumnya menetapkan header permintaan yang mencegah pencachingan. Penyimpanan output, yang tersedia di .NET 7 atau yang lebih baru, menguntungkan aplikasi UI. Dengan caching output, konfigurasi memutuskan apa yang harus di-cache tanpa bergantung pada header HTTP.
  • Mungkin bermanfaat untuk permintaan API GET atau HEAD publik dari klien di mana Kondisi penembolokan terpenuhi.

Untuk menguji penyimpanan cache respons, gunakan Fiddler, atau alat lain yang dapat secara eksplisit mengatur header permintaan. Mengatur header secara eksplisit lebih disukai untuk menguji caching. Untuk informasi selengkapnya, lihat Pemecahan masalah.

Penggunaan cache untuk output

Middleware penembolokan output memungkinkan penembolokan respons HTTP. Penembolokan output berbeda dari penembolokan respons dengan cara berikut:

  • Perilaku cache dapat dikonfigurasi di server.

    Perilaku penembolokan respons ditentukan oleh header HTTP. Misalnya, saat Anda mengunjungi situs web dengan Chrome atau Edge, browser secara otomatis mengirim Cache-control: max-age=0 header. Header ini secara efektif menonaktifkan penyimpanan sementara respons, karena server mengikuti instruksi yang disediakan oleh klien. Respons baru dikembalikan untuk setiap permintaan, bahkan jika server memiliki respons cache baru. Dengan cache output, klien tidak mengubah perilaku cache yang Anda konfigurasikan di server.

  • Media penyimpanan cache dapat diperluas.

    Memori digunakan secara default. Penyimpanan sementara respons terbatas di memori.

  • Anda dapat membatalkan entri singgahan yang dipilih melalui pemrograman.

    Ketergantungan caching respons pada header HTTP membuat Anda memiliki sedikit opsi untuk menghapus entri cache.

  • Penguncian sumber daya mengurangi risiko serbuan cache dan efek kawanan serempak.

    Cache stampede terjadi ketika entri cache yang sering digunakan dicabut, dan terlalu banyak permintaan mencoba untuk mengisi ulang entri cache yang sama secara bersamaan. Thundering herd serupa: gelombang permintaan untuk respons yang sama yang belum ada dalam entri cache. Penguncian sumber daya memastikan bahwa semua permintaan untuk respons tertentu menunggu permintaan pertama mengisi cache. Penyimpanan sementara respons tidak memiliki fitur penguncian sumber daya.

  • Validasi ulang cache meminimalkan penggunaan bandwidth.

    Validasi ulang cache berarti server dapat mengembalikan 304 Not Modified kode status HTTP alih-alih isi respons yang di-cache. Kode status ini memberi tahu klien bahwa respons terhadap permintaan tidak berubah dari apa yang diterima sebelumnya. Penembolokan respons tidak melakukan validasi ulang cache.

Penembolokan memori

Penembolokan memori menggunakan memori server untuk menyimpan data yang di-cache. Jenis caching ini cocok untuk satu server atau beberapa server yang menggunakan afinitas sesi. Afinitas sesi juga dikenal sebagai sesi lengket. Afinitas sesi berarti bahwa permintaan dari klien selalu dirutekan ke server yang sama untuk diproses.

Untuk informasi selengkapnya, lihat Cache dalam memori di ASP.NET Core dan Pemecahan masalah afinitas sesi pada Azure Application Gateway.

Cache Terdistribusi

Gunakan cache terdistribusi untuk menyimpan data saat aplikasi dihosting di cloud atau farm server. Cache dibagikan di seluruh server yang memproses permintaan. Klien dapat mengirimkan permintaan yang ditangani oleh server mana pun dalam grup jika data yang di-cache untuk klien tersedia. ASP.NET Core berfungsi dengan cache terdistribusi SQL Server, Redis, dan NCache .

Untuk informasi selengkapnya, lihat Cache terdistribusi di ASP.NET Core.

HybridCache

HybridCache API menjembatani beberapa celah di IDistributedCache API dan IMemoryCache API. HybridCache adalah kelas abstrak dengan implementasi default yang menangani sebagian besar aspek penyimpanan ke cache dan mengambil dari cache.

Fitur

HybridCache memiliki fitur berikut yang tidak dimiliki API lain:

  • API terpadu untuk caching dalam proses dan di luar proses.

    HybridCache dirancang sebagai pengganti drop-in untuk penggunaan IDistributedCache dan IMemoryCache yang sudah ada, dan menyediakan API yang sederhana untuk menambahkan kode penembolokan baru. Jika aplikasi memiliki IDistributedCache implementasi, layanan HybridCache menggunakannya untuk caching sekunder. Strategi caching dua tingkat ini memungkinkan HybridCache untuk memberikan kecepatan cache dalam memori dan ketahanan cache terdistribusi atau persisten.

  • Perlindungan dari serbuan.

    Cache stampede terjadi ketika entri cache yang sering digunakan dicabut, dan terlalu banyak permintaan mencoba untuk mengisi ulang entri cache yang sama secara bersamaan. HybridCache menggabungkan operasi bersamaan, memastikan bahwa semua permintaan untuk respons tertentu menunggu permintaan pertama mengisi cache.

  • Serialisasi yang dapat dikonfigurasi.

    Serialisasi dikonfigurasi sebagai bagian dari pendaftaran layanan, dengan dukungan untuk serializer yang spesifik pada jenis dan yang umum melalui metode WithSerializer dan WithSerializerFactory, yang dihubungkan dari pemanggilan AddHybridCache. Secara default, layanan menangani string dan byte[] secara internal, dan menggunakan System.Text.Json untuk yang lain. Ini dapat dikonfigurasi untuk jenis serializer lainnya, seperti protobuf atau XML.

Untuk melihat kesederhanaan relatif dari API HybridCache, bandingkan kode yang menggunakannya dengan kode yang menggunakan IDistributedCache. Berikut adalah contoh tampilan penggunaan IDistributedCache :

public class SomeService(IDistributedCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        var key = $"someinfo:{name}:{id}"; // Unique key for this combination.
        var bytes = await cache.GetAsync(key, token); // Try to get from cache.
        SomeInformation info;
        if (bytes is null)
        {
            // Cache miss; get the data from the real source.
            info = await SomeExpensiveOperationAsync(name, id, token);

            // Serialize and cache it.
            bytes = SomeSerializer.Serialize(info);
            await cache.SetAsync(key, bytes, token);
        }
        else
        {
            // Cache hit; deserialize it.
            info = SomeSerializer.Deserialize<SomeInformation>(bytes);
        }
        return info;
    }

    // This is the work we're trying to cache.
    private async Task<SomeInformation> SomeExpensiveOperationAsync(string name, int id,
        CancellationToken token = default)
    { /* ... */ }
}

Itu banyak pekerjaan yang harus dilakukan dengan benar setiap kali, termasuk hal-hal seperti serialisasi. Dalam skenario "cache miss", Anda mungkin menghadapi beberapa utas yang berjalan bersamaan, semuanya mengalami cache miss, semuanya mengambil data inti, semuanya menserialisasikannya, dan semuanya mengirim data tersebut ke cache.

Berikut kode yang setara menggunakan HybridCache:

public class SomeService(HybridCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        return await cache.GetOrCreateAsync(
            $"someinfo:{name}:{id}", // Unique key for this entry.
            async cancel => await SomeExpensiveOperationAsync(name, id, cancel),
            token: token
        );
    }
}

Kode lebih sederhana dan pustaka memberikan perlindungan dari serangan mendadak serta fitur lain yang IDistributedCache tidak.

Kompatibilitas

Pustaka HybridCache mendukung runtime .NET yang lebih lama, hingga .NET Framework 4.7.2 dan .NET Standard 2.0.

Sumber Daya Tambahan:

Untuk informasi selengkapnya, lihat sumber daya berikut:

Pembantu Tag Cache

Cache konten dari tampilan MVC atau Razor Halaman dengan Pembantu Tag Cache. Pembantu Tag Cache menggunakan penembolokan dalam memori untuk menyimpan data.

Untuk informasi selengkapnya, lihat Pembantu Tag Cache di ASP.NET Core MVC.

Pembantu Tag Cache Terdistribusi

Cache-kan konten dari tampilan MVC atau Razor halaman dalam skenario cloud terdistribusi atau farm web menggunakan Distributed Cache Tag Helper. Distributed Cache Tag Helper menggunakan SQL Server, Redis, atau NCache untuk menyimpan data.

Untuk informasi selengkapnya, lihat Pembantu Tag Cache Terdistribusi di ASP.NET Core.

Pembuatan cache respons

Middleware penyimpanan sementara respons

  • Mengaktifkan cache respons server berdasarkan pada header cache HTTP. Menerapkan semantik cache HTTP standar. Cache berdasarkan header cache HTTP seperti yang dilakukan proksi.
  • Biasanya tidak bermanfaat untuk aplikasi UI seperti Razor Pages karena browser umumnya menetapkan header permintaan yang mencegah pencachingan. Penyimpanan output, yang tersedia di .NET 7 atau yang lebih baru, menguntungkan aplikasi UI. Dengan caching output, konfigurasi memutuskan apa yang harus di-cache tanpa bergantung pada header HTTP.
  • Mungkin bermanfaat untuk permintaan API GET atau HEAD publik dari klien di mana Kondisi penembolokan terpenuhi.

Untuk menguji penyimpanan cache respons, gunakan Fiddler, atau alat lain yang dapat secara eksplisit mengatur header permintaan. Mengatur header secara eksplisit lebih disukai untuk menguji caching. Untuk informasi selengkapnya, lihat Pemecahan masalah.

Penggunaan cache untuk output

Penyimpanan sementara output tersedia di .NET 7 atau versi yang lebih baru.