Bagikan melalui


Pembantu Tag Cache di ASP.NET Core MVC

Oleh Peter Kellner

Cache Tag Helper menyediakan kemampuan untuk meningkatkan performa aplikasi ASP.NET Core Anda dengan menyimpan kontennya ke penyedia cache internal ASP.NET Core.

Untuk gambaran umum tentang Pembantu Tag, lihat Pembantu Tag di ASP.NET Core.

Markup berikut menyimpan Razor tanggal saat ini:

<cache>@DateTime.Now</cache>

Permintaan pertama ke halaman yang berisi Pembantu Tag menampilkan tanggal saat ini. Permintaan tambahan menunjukkan nilai cache hingga cache kedaluwarsa (default 20 menit) atau hingga tanggal cache dikeluarkan dari cache.

Atribut Pembantu Tag Cache

diaktifkan

Jenis Atribut Contoh Default
Boolean true, false true

enabled menentukan apakah konten yang diapit oleh Pembantu Tag Cache di-cache. Default adalah true. Jika diatur ke false, output yang dirender tidak di-cache.

Contoh:

<cache enabled="true">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

kedaluwarsa-aktif

Jenis Atribut Contoh
DateTimeOffset @new DateTime(2025,1,29,17,02,0)

expires-on mengatur tanggal kedaluwarsa absolut untuk item yang di-cache.

Contoh berikut menyimpan konten Pembantu Tag Cache hingga pukul 17.02 pada 29 Januari 2025:

<cache expires-on="@new DateTime(2025,1,29,17,02,0)">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

kedaluwarsa-setelah

Jenis Atribut Contoh Default
TimeSpan @TimeSpan.FromSeconds(120) 20 menit

expires-after mengatur lamanya waktu dari waktu permintaan pertama untuk menyimpan cache konten.

Contoh:

<cache expires-after="@TimeSpan.FromSeconds(120)">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

Razor Mesin Tampilan mengatur nilai default expires-after menjadi dua puluh menit.

kedaluwarsa-geser

Jenis Atribut Contoh
TimeSpan @TimeSpan.FromSeconds(60)

Mengatur waktu entri cache harus dikeluarkan jika nilainya belum diakses.

Contoh:

<cache expires-sliding="@TimeSpan.FromSeconds(60)">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

vary-by-header

Jenis Atribut Contoh
String User-Agent, User-Agent,content-encoding

vary-by-header menerima daftar nilai header yang dibatasi koma yang memicu refresh cache saat berubah.

Contoh berikut memantau nilai User-Agentheader . Contoh cache konten untuk setiap berbeda yang User-Agent disajikan ke server web:

<cache vary-by-header="User-Agent">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

vary-by-query

Jenis Atribut Contoh
String Make, Make,Model

vary-by-query menerima daftar Keys yang dibatasi koma dalam string kueri (Query) yang memicu refresh cache saat nilai kunci yang tercantum berubah.

Contoh berikut memantau nilai Make dan Model. Contoh cache konten untuk setiap yang berbeda Make dan Model disajikan ke server web:

<cache vary-by-query="Make,Model">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

vary-by-route

Jenis Atribut Contoh
String Make, Make,Model

vary-by-route menerima daftar nama parameter rute yang dibatasi koma yang memicu refresh cache saat nilai parameter data rute berubah.

Contoh:

Startup.cs:

routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{Make?}/{Model?}");

Index.cshtml:

<cache vary-by-route="Make,Model">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
Jenis Atribut Contoh
String .AspNetCore.Identity.Application, .AspNetCore.Identity.Application,HairColor

vary-by-cookie menerima daftar cookie nama yang dibatasi koma yang memicu refresh cache saat cookie nilai berubah.

Contoh berikut memantau yang cookie terkait dengan ASP.NET Core Identity. Saat pengguna diautentikasi, perubahan dalam Identitycookie memicu refresh cache:

<cache vary-by-cookie=".AspNetCore.Identity.Application">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

vary-by-user

Jenis Atribut Contoh Default
Boolean true, false true

vary-by-user menentukan apakah cache direset atau tidak saat pengguna yang masuk (atau Prinsipal Konteks) berubah. Pengguna saat ini juga dikenal sebagai Prinsipal Konteks Permintaan dan dapat dilihat dalam Razor tampilan dengan mereferensikan @User.Identity.Name.

Contoh berikut memantau pengguna yang masuk saat ini untuk memicu refresh cache:

<cache vary-by-user="true">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

Menggunakan atribut ini mempertahankan konten dalam cache melalui siklus masuk dan keluar. Ketika nilai diatur ke true, siklus autentikasi membatalkan cache untuk pengguna yang diautentikasi. Cache tidak valid karena nilai unik cookie baru dihasilkan saat pengguna diautentikasi. Cache dipertahankan untuk status anonim ketika tidak cookie ada atau telah kedaluwarsa cookie . Jika pengguna tidak diautentikasi, cache akan dipertahankan.

bervariasi-oleh

Jenis Atribut Contoh
String @Model

vary-by memungkinkan penyesuaian data apa yang di-cache. Saat objek yang dirujuk oleh nilai string atribut berubah, konten Pembantu Tag Cache diperbarui. Seringkali, perangkaian string nilai model ditetapkan ke atribut ini. Secara efektif, ini menghasilkan skenario di mana pembaruan ke salah satu nilai yang digabungkan membatalkan cache.

Contoh berikut mengasumsikan metode pengontrol yang merender tampilan menjumlahkan nilai bilangan bulat dari dua parameter rute, myParam1 dan myParam2, dan mengembalikan jumlah sebagai properti model tunggal. Ketika jumlah ini berubah, konten Pembantu Tag Cache dirender dan di-cache lagi.

Tindakan:

public IActionResult Index(string myParam1, string myParam2, string myParam3)
{
    int num1;
    int num2;
    int.TryParse(myParam1, out num1);
    int.TryParse(myParam2, out num2);
    return View(viewName, num1 + num2);
}

Index.cshtml:

<cache vary-by="@Model">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

prioritas

Jenis Atribut Contoh Default
CacheItemPriority High, Low, NeverRemove, Normal Normal

priority menyediakan panduan pengeluaran cache ke penyedia cache bawaan. Server web mengeluarkan Low entri cache terlebih dahulu ketika berada di bawah tekanan memori.

Contoh:

<cache priority="High">
    Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>

Atribut priority tidak menjamin tingkat retensi cache tertentu. CacheItemPriority hanya saran. Mengatur atribut ini ke NeverRemove tidak menjamin bahwa item yang di-cache selalu dipertahankan. Lihat topik di bagian Sumber Daya Tambahan untuk informasi selengkapnya.

Pembantu Tag Cache bergantung pada layanan cache memori. Pembantu Tag Cache menambahkan layanan jika belum ditambahkan.

Sumber Daya Tambahan: