Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Por Peter Kellner
O Auxiliar de Marca de Cache possibilita melhorar o desempenho de seu aplicativo ASP.NET Core armazenando seu conteúdo em cache no provedor de cache interno do ASP.NET Core.
Para ter uma visão geral dos Auxiliares de Marcação, confira Auxiliares de Marcação no ASP.NET Core.
A seguinte marcação Razor armazena em cache a data atual:
<cache>@DateTime.Now</cache>
A primeira solicitação para a página que contém o Auxiliar de Marca exibe a data atual. Solicitações adicionais mostram o valor armazenado em cache até que o cache expire (padrão de 20 minutos) ou até que a data em cache seja removida do cache.
Atributos do Auxiliar de Marca de Cache
Habilitado
Tipo de Atributo | Exemplos | Padrão |
---|---|---|
Boolean | true , false |
true |
enabled
determina se o conteúdo envolto pelo Auxiliar de Marca de Cache é armazenado em cache. O padrão é true
. Se definido como false
, a saída renderizada não é armazenada em cache.
Exemplo:
<cache enabled="true">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
expires-on
Tipo de Atributo | Exemplo |
---|---|
DateTimeOffset |
@new DateTime(2025,1,29,17,02,0) |
expires-on
define uma data do término absoluta para o item em cache.
O exemplo a seguir armazena em cache o conteúdo do Auxiliar de Marca de Cache até às 17:02 de 29 de janeiro de 2025:
<cache expires-on="@new DateTime(2025,1,29,17,02,0)">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
expires-after
Tipo de Atributo | Exemplo | Padrão |
---|---|---|
TimeSpan |
@TimeSpan.FromSeconds(120) |
20 minutos |
expires-after
define o tempo decorrido desde a primeira solicitação para armazenar o conteúdo em cache.
Exemplo:
<cache expires-after="@TimeSpan.FromSeconds(120)">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
O Mecanismo de Exibição Razor define o valor padrão expires-after
para vinte minutos.
expires-sliding
Tipo de Atributo | Exemplo |
---|---|
TimeSpan |
@TimeSpan.FromSeconds(60) |
Define a hora em que uma entrada de cache deverá ser removida se o seu valor não tiver sido acessado.
Exemplo:
<cache expires-sliding="@TimeSpan.FromSeconds(60)">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-header
Tipo de Atributo | Exemplos |
---|---|
String | User-Agent , User-Agent,content-encoding |
vary-by-header
aceita uma lista delimitada por vírgulas de valores de cabeçalho que disparam uma atualização do cache quando eles mudam.
O exemplo a seguir monitora o valor do cabeçalho User-Agent
. O exemplo armazena em cache o conteúdo para cada User-Agent
diferente apresentado ao servidor Web:
<cache vary-by-header="User-Agent">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-query
Tipo de Atributo | Exemplos |
---|---|
String | Make , Make,Model |
vary-by-query
aceita uma lista delimitada por vírgula de Keys em uma cadeia de consulta (Query) que dispara uma atualização do cache quando o valor de qualquer chave listada é alterado.
O exemplo a seguir monitora os valores de Make
e Model
. O exemplo armazena em cache o conteúdo para todos os diferentes Make
e Model
apresentados ao servidor Web:
<cache vary-by-query="Make,Model">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-route
Tipo de Atributo | Exemplos |
---|---|
String | Make , Make,Model |
vary-by-route
aceita uma lista delimitada por vírgulas de nomes de parâmetros de rota que disparam uma atualização do cache quando o valor de parâmetro de dados de rota muda.
Exemplo:
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
Tipo de Atributo | Exemplos |
---|---|
String | .AspNetCore.Identity.Application , .AspNetCore.Identity.Application,HairColor |
vary-by-cookie
aceita uma lista delimitada por vírgulas de cookie nomes que disparam uma atualização de cache quando os valores de cookie são alterados.
O exemplo a seguir monitora o cookie associado ao ASP.NET Core Identity. Quando um usuário é autenticado, uma alteração no Identitycookie dispara uma atualização do cache:
<cache vary-by-cookie=".AspNetCore.Identity.Application">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
vary-by-user
Tipo de Atributo | Exemplos | Padrão |
---|---|---|
Boolean | true , false |
true |
vary-by-user
especifica se o cache é redefinido ou não quando o usuário conectado (ou a Entidade de Contexto) muda. O usuário atual também é conhecido como Entidade do Contexto da Solicitação e pode ser visualizado em uma exibição Razor fazendo referência a @User.Identity.Name
.
O exemplo a seguir monitora o usuário conectado atual para disparar uma atualização de cache:
<cache vary-by-user="true">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
Usar esse atributo mantém o conteúdo no cache durante um ciclo de entrada e saída. Quando o valor é definido como true
, um ciclo de autenticação invalida o cache para o usuário autenticado. O cache é invalidado porque um novo valor cookie exclusivo é gerado quando um usuário é autenticado. O cache é mantido no estado anônimo quando nenhum cookie estiver presente ou o cookie tiver expirado. Se o usuário não estiver autenticado, o cache será mantido.
vary-by
Tipo de Atributo | Exemplo |
---|---|
String | @Model |
vary-by
permite a personalização de quais dados são armazenados em cache. Quando o objeto referenciado pelo valor de cadeia de caracteres do atributo é alterado, o conteúdo do Auxiliar de Marca de Cache é atualizado. Frequentemente, uma concatenação de cadeia de caracteres de valores do modelo é atribuída a este atributo. Na verdade, isso resulta em um cenário em que uma atualização de qualquer um dos valores concatenados invalida o cache.
O exemplo a seguir supõe que o método do controlador que renderiza a exibição somas o valor inteiro dos dois parâmetros de rota, myParam1
e myParam2
, e os retorna a soma como a propriedade de modelo única. Quando essa soma é alterada, o conteúdo do Auxiliar de Marca de Cache é renderizado e armazenado em cache novamente.
Ação:
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
Tipo de Atributo | Exemplos | Padrão |
---|---|---|
CacheItemPriority |
High , Low , NeverRemove , Normal |
Normal |
priority
fornece diretrizes de remoção do cache para o provedor de cache interno. O servidor Web remove entradas de cache Low
primeiro quando está sob demanda de memória.
Exemplo:
<cache priority="High">
Current Time Inside Cache Tag Helper: @DateTime.Now
</cache>
O atributo priority
não assegura um nível específico de retenção de cache. CacheItemPriority
é apenas uma sugestão. Configurar esse atributo como NeverRemove
não assegura que os itens armazenados em cache sempre sejam retidos. Veja os tópicos na seção Recursos Adicionais para obter mais informações.
O Auxiliar de Marca de Cache é dependente do serviço de cache de memória. O Auxiliar de Marca de Cache adicionará o serviço se ele não tiver sido adicionado.