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 nie są buforowane.
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-Agent
nagłó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>
vary-by-cookie
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.Name
się 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 myParam1
myParam2
, 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla