Pomocná rutina značek mezipaměti v ASP.NET Core MVC
Autor: Peter Kellner
Pomocná rutina značek mezipaměti umožňuje zlepšit výkon aplikace ASP.NET Core tím, že obsah ukládá do mezipaměti internímu poskytovateli mezipaměti ASP.NET Core.
Přehled pomocných rutin značek najdete v tématu Pomocné rutiny značek v ASP.NET Core.
Razor Následující kód ukládá aktuální datum do mezipaměti:
<cache>@DateTime.Now</cache>
První požadavek na stránku, která obsahuje pomocnou rutinu značek, zobrazí aktuální datum. Další žádosti zobrazují hodnotu uloženou v mezipaměti, dokud nevyprší platnost mezipaměti (výchozí 20 minut) nebo dokud se z mezipaměti nevyřadí datum uložení do mezipaměti.
Atributy pomocné rutiny značek mezipaměti
enabled
Typ atributu | Příklady | Výchozí |
---|---|---|
Logický | true , false |
true |
enabled
určuje, zda je obsah uzavřený pomocným rutinou značek mezipaměti uložen do mezipaměti. Výchozí hodnota je true
. Pokud je nastavená hodnota false
, vykreslený výstup neníuložen v mezipaměti.
Příklad:
<cache enabled="true">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vyprší-on
Typ atributu | Příklad |
---|---|
DateTimeOffset |
@new DateTime(2025,1,29,17,02,0) |
expires-on
nastaví absolutní datum vypršení platnosti položky uložené v mezipaměti.
Následující příklad ukládá obsah pomocné rutiny značek mezipaměti do 29. ledna 2025 do 29:02:
<cache expires-on="@new DateTime(2025,1,29,17,02,0)">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vyprší-po
Typ atributu | Příklad | Výchozí |
---|---|---|
TimeSpan |
@TimeSpan.FromSeconds(120) |
20 minut |
expires-after
nastaví dobu od prvního požadavku pro uložení obsahu do mezipaměti.
Příklad:
<cache expires-after="@TimeSpan.FromSeconds(120)">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
Modul Razor zobrazení nastaví výchozí expires-after
hodnotu na dvacet minut.
vypršení platnosti posuvného
Typ atributu | Příklad |
---|---|
TimeSpan |
@TimeSpan.FromSeconds(60) |
Nastaví dobu, po kterou by se měla položka mezipaměti vyřadit, pokud se k její hodnotě nepřistupuje.
Příklad:
<cache expires-sliding="@TimeSpan.FromSeconds(60)">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-header
Typ atributu | Příklady |
---|---|
Řetězec | User-Agent , User-Agent,content-encoding |
vary-by-header
přijímá čárkami oddělený seznam hodnot hlaviček, které při změně aktivují aktualizaci mezipaměti.
Následující příklad monitoruje hodnotu User-Agent
hlavičky . Příklad ukládá obsah do mezipaměti pro každý jiný User-Agent
obsah zobrazený na webovém serveru:
<cache vary-by-header="User-Agent">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-query
Typ atributu | Příklady |
---|---|
Řetězec | Make , Make,Model |
vary-by-query
přijímá čárkami oddělený seznam Keys v řetězci dotazu (Query), který aktivuje aktualizaci mezipaměti, když se změní hodnota všech uvedených klíčů.
Následující příklad monitoruje hodnoty Make
a Model
. Příklad ukládá obsah do mezipaměti pro každý jiný Make
a Model
prezentovaný na webovém serveru:
<cache vary-by-query="Make,Model">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-route
Typ atributu | Příklady |
---|---|
Řetězec | Make , Make,Model |
vary-by-route
přijímá čárkami oddělený seznam názvů parametrů trasy, které aktivují aktualizaci mezipaměti při změně hodnoty parametru směrování dat.
Příklad:
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-by-cookie
Typ atributu | Příklady |
---|---|
Řetězec | .AspNetCore.Identity.Application , .AspNetCore.Identity.Application,HairColor |
vary-by-cookie
přijímá seznam názvů oddělených cookie čárkami, které při změně hodnot aktivují aktualizaci cookie mezipaměti.
Následující příklad monitoruje cookie přidružené k ASP.NET Core Identity. Když se uživatel ověří, změna v triggeru Identitycookie aktivuje aktualizaci mezipaměti:
<cache vary-by-cookie=".AspNetCore.Identity.Application">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-user
Typ atributu | Příklady | Výchozí |
---|---|---|
Logický | true , false |
true |
vary-by-user
určuje, jestli se mezipaměť resetuje při změně přihlášeného uživatele (nebo objektu zabezpečení kontextu). Aktuální uživatel se také označuje jako objekt zabezpečení kontextu požadavku a lze ho Razor zobrazit v zobrazení odkazem @User.Identity.Name
.
Následující příklad monitoruje aktuální přihlášeného uživatele, aby aktivoval aktualizaci mezipaměti:
<cache vary-by-user="true">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
Použití tohoto atributu udržuje obsah v mezipaměti prostřednictvím cyklu přihlašování a odhlášení. Pokud je hodnota nastavena na true
, ověřovací cyklus zneplatní mezipaměť ověřeného uživatele. Mezipaměť je neplatná, protože při ověření uživatele se vygeneruje nová jedinečná cookie hodnota. Mezipaměť se udržuje pro anonymní stav, pokud neexistuje nebo cookiecookie vypršela jeho platnost. Pokud uživatel není ověřený, mezipaměť se zachová.
vary-by
Typ atributu | Příklad |
---|---|
Řetězec | @Model |
vary-by
umožňuje přizpůsobení dat uložených v mezipaměti. Když se objekt odkazovaný řetězcovou hodnotou atributu změní, obsah pomocné rutiny značek mezipaměti se aktualizuje. K tomuto atributu se často přiřazuje zřetězení řetězců hodnot modelu. Výsledkem je tedy scénář, kdy aktualizace některé z zřetězených hodnot zneplatní mezipaměť.
Následující příklad předpokládá, že metoda kontroleru vykreslení zobrazení sečte celočíselnou hodnotu dvou parametrů trasy, myParam1
a myParam2
a vrátí součet jako jednu model vlastnost. Když se tento součet změní, obsah pomocné rutiny značek mezipaměti se vykreslí a znovu do mezipaměti.
Akce:
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>
Prioritou
Typ atributu | Příklady | Výchozí |
---|---|---|
CacheItemPriority |
High , Low , NeverRemove , Normal |
Normal |
priority
poskytuje pokyny k vyřazení mezipaměti integrovanému poskytovateli mezipaměti. Webový server nejprve vyřadí Low
položky mezipaměti, když je pod tlakem paměti.
Příklad:
<cache priority="High">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
Atribut priority
nezaručuje konkrétní úroveň uchovávání mezipaměti. CacheItemPriority
je jen návrh. Nastavení tohoto atributu NeverRemove
nezaručuje, že položky uložené v mezipaměti jsou vždy zachovány. Další informace najdete v tématech v části Další zdroje informací.
Pomocná rutina značek mezipaměti závisí na službě mezipaměti paměti. Pomocník značky mezipaměti přidá službu, pokud nebyla přidána.
Další prostředky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro