Pomocnik tagów pamięci podręcznej w ASP.NET Core MVC

Autor: Peter Kellner

Pomocnik tagów pamięci podręcznej umożliwia zwiększenie wydajności aplikacji ASP.NET Core przez buforowanie jej zawartości do wewnętrznego dostawcy pamięci podręcznej ASP.NET Core.

Aby zapoznać się z omówieniem pomocników tagów, zobacz Pomocnicy tagów na platformie ASP.NET Core.

Następująca Razor adiustacja buforuje bieżącą datę:

<cache>@DateTime.Now</cache>

Pierwsze żądanie do strony zawierającej pomocnika tagów wyświetla bieżącą datę. Dodatkowe żądania pokazują wartość buforowaną do momentu wygaśnięcia pamięci podręcznej (domyślnie 20 minut) lub do momentu eksmitowania buforowanej daty z pamięci podręcznej.

Atrybuty pomocnika tagów pamięci podręcznej

enabled

Typ atrybutu Przykłady Domyślna
Wartość logiczna true, false true

enabled określa, czy zawartość ujęta w pomocnik tagu pamięci podręcznej jest buforowana. Wartość domyślna to true. Jeśli ustawiono wartość false, renderowane dane wyjściowe niebuforowane.

Przykład:

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

wygaśnie

Typ atrybutu Przykład
DateTimeOffset @new DateTime(2025,1,29,17,02,0)

expires-on Ustawia bezwzględną datę wygaśnięcia dla buforowanego elementu.

Poniższy przykład buforuje zawartość pomocnika tagów pamięci podręcznej do godziny 17:02 w dniu 29 stycznia 2025 r.:

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

wygasa po

Typ atrybutu Przykład Domyślna
TimeSpan @TimeSpan.FromSeconds(120) 20 minut

expires-after Ustawia czas od pierwszego żądania do buforowania zawartości.

Przykład:

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

Razor Aparat widoków ustawia wartość domyślną expires-after na dwadzieścia minut.

przesuwanie wygasa

Typ atrybutu Przykład
TimeSpan @TimeSpan.FromSeconds(60)

Ustawia czas eksmitowania wpisu pamięci podręcznej, jeśli jej wartość nie została wyświetlona.

Przykład:

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

vary-by-header

Typ atrybutu Przykłady
Ciąg User-Agent, User-Agent,content-encoding

vary-by-header akceptuje rozdzielaną przecinkami listę wartości nagłówków, które wyzwalają odświeżanie pamięci podręcznej po ich zmianie.

Poniższy przykład monitoruje wartość User-Agentnagłówka . Przykład buforuje zawartość dla każdego innego User-Agent przedstawionego serwera internetowego:

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

vary-by-query

Typ atrybutu Przykłady
Ciąg Make, Make,Model

vary-by-query Akceptuje rozdzielaną przecinkami listę Keys w ciągu zapytania (Query), która wyzwala odświeżanie pamięci podręcznej po zmianie wartości dowolnego klucza na liście.

Poniższy przykład monitoruje wartości Make i Model. Przykład buforuje zawartość dla każdego innego Make serwera internetowego i Model przedstawia go:

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

vary-by-route

Typ atrybutu Przykłady
Ciąg Make, Make,Model

vary-by-route Akceptuje rozdzielaną przecinkami listę nazw parametrów trasy, które wyzwalają odświeżanie pamięci podręcznej po zmianie wartości parametru danych trasy.

Przykład:

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>
Typ atrybutu Przykłady
Ciąg .AspNetCore.Identity.Application, .AspNetCore.Identity.Application,HairColor

vary-by-cookie akceptuje rozdzielaną przecinkami listę cookie nazw, które wyzwalają odświeżanie pamięci podręcznej po cookie zmianie wartości.

Poniższy przykład monitoruje cookie element skojarzony z programem ASP.NET Core Identity. Po uwierzytelnieniu użytkownika zmiana wyzwala Identitycookie odświeżania pamięci podręcznej:

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

vary-by-user

Typ atrybutu Przykłady Domyślna
Wartość logiczna true, false true

vary-by-user określa, czy pamięć podręczna zostanie zresetowana po zmianie zalogowanych użytkowników (lub podmiotu zabezpieczeń kontekstu). Bieżący użytkownik jest również znany jako podmiot zabezpieczeń kontekstu żądania i można go wyświetlić w Razor widoku, odwołując @User.Identity.Namesię do .

Poniższy przykład monitoruje bieżącego zalogowanego użytkownika w celu wyzwolenia odświeżania pamięci podręcznej:

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

Użycie tego atrybutu utrzymuje zawartość w pamięci podręcznej za pośrednictwem cyklu logowania i wylogowania. Gdy wartość jest ustawiona na true, cykl uwierzytelniania unieważnia pamięć podręczną dla uwierzytelnionego użytkownika. Pamięć podręczna jest unieważniana, ponieważ podczas uwierzytelniania użytkownika jest generowana nowa unikatowa cookie wartość. Pamięć podręczna jest przechowywana w stanie anonimowym, gdy nie cookie istnieje lub cookie wygasła. Jeśli użytkownik nie jest uwierzytelniony, pamięć podręczna jest utrzymywana.

vary-by

Typ atrybutu Przykład
Ciąg @Model

vary-by umożliwia dostosowanie danych przechowywanych w pamięci podręcznej. Gdy obiekt, do których odwołuje się wartość ciągu atrybutu, zostanie zaktualizowana zawartość pomocnika tagów pamięci podręcznej. Często łączenie ciągów wartości modelu jest przypisywane do tego atrybutu. W efekcie powoduje to scenariusz, w którym aktualizacja dowolnej z połączonych wartości unieważnia pamięć podręczną.

W poniższym przykładzie przyjęto założenie, że metoda kontrolera renderuje widok sumuje wartość całkowitą dwóch parametrów trasy i myParam1myParam2, i zwraca sumę jako właściwość pojedynczego modelu. Po zmianie tej sumy zawartość pomocnika tagów pamięci podręcznej jest renderowana i buforowana ponownie.

Czynność:

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>

priority

Typ atrybutu Przykłady Domyślna
CacheItemPriority High, Low, NeverRemove, Normal Normal

priority Udostępnia wskazówki dotyczące eksmisji pamięci podręcznej dla wbudowanego dostawcy pamięci podręcznej. Serwer internetowy eksmituje Low wpisy pamięci podręcznej najpierw, gdy jest pod ciśnieniem pamięci.

Przykład:

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

Atrybut priority nie gwarantuje określonego poziomu przechowywania pamięci podręcznej. CacheItemPriority to tylko sugestia. Ustawienie tego atrybutu na NeverRemove nie gwarantuje, że buforowane elementy są zawsze zachowywane. Aby uzyskać więcej informacji, zobacz tematy w sekcji Dodatkowe zasoby .

Pomocnik tagów pamięci podręcznej jest zależny od usługi pamięci podręcznej. Pomocnik tagów pamięci podręcznej dodaje usługę, jeśli nie została dodana.

Dodatkowe zasoby