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-Agenthlavič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>
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 myParam2a 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