Eventos
Campeonato Mundial de Visualização de Dados do Power BI
14 de fev., 16 - 31 de mar., 16
Com 4 chances de participar, você pode ganhar um pacote de conferência e chegar à Grande Final AO VIVO em Las Vegas
Saiba maisNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Por Rick Anderson e Kirk Larkin
Exibir ou baixar código de exemplo (como baixar)
O cache de resposta reduz o número de solicitações que um cliente ou proxy faz a um servidor Web. O cache de resposta também reduz a quantidade de trabalho que o servidor Web executa para gerar uma resposta. O cache de resposta é definido em cabeçalhos.
O atributo ResponseCache define cabeçalhos de cache de resposta. Clientes e proxies intermediários devem respeitar os cabeçalhos para armazenar respostas em cache em RFC 9111: cache HTTP.
Para cache do lado do servidor que segue a especificação de cache HTTP 1.1, use Middleware de cache de resposta. O middleware pode usar as propriedades ResponseCacheAttribute para influenciar o comportamento de cache do lado do servidor.
O middleware de cache de resposta:
Para testar o cache de resposta, use Fiddler ou outra ferramenta que possa definir explicitamente os cabeçalhos de solicitação. A configuração explícita de cabeçalhos é preferida para testar o armazenamento em cache. Para saber mais, consulte a Solução de problemas.
RFC 9111: O cache HTTP descreve como os caches de Internet devem se comportar. O cabeçalho HTTP principal usado para cache é Cache-Control, que é usado para especificar diretivas de cache. As diretivas controlam o comportamento de cache à medida que as solicitações passam de clientes para servidores e, à medida que as respostas fazem o caminho dos servidores de volta para os clientes. Solicitações e respostas são movidas por meio de servidores proxy e os servidores proxy também devem estar em conformidade com a especificação de cache HTTP 1.1.
As diretivas Cache-Control
comuns são mostradas na tabela a seguir.
Diretiva | Ação |
---|---|
público | Um cache pode armazenar a resposta. |
private | A resposta não deve ser armazenada por um cache compartilhado. Um cache privado pode armazenar e reutilizar a resposta. |
max-age | O cliente não aceita uma resposta cuja idade é maior que o número especificado de segundos. Exemplos: max-age=60 (60 segundos), max-age=2592000 (1 mês) |
no-cache | Em solicitações: um cache não deve usar uma resposta armazenada para atender à solicitação. O servidor de origem regenera a resposta para o cliente e o middleware atualiza a resposta armazenada em seu cache. Em respostas: a resposta não deve ser usada para uma solicitação subsequente sem validação no servidor de origem. |
no-store | Em solicitações: um cache não deve armazenar a solicitação. Em respostas: um cache não deve armazenar nenhuma parte da resposta. |
Outros cabeçalhos de cache que desempenham uma função no cache são mostrados na tabela a seguir.
parâmetro | Função |
---|---|
Age | Uma estimativa da quantidade de tempo em segundos desde que a resposta foi gerada ou validada com êxito no servidor de origem. |
Expira em | O tempo após o qual a resposta é considerada obsoleta. |
Pragma | Existe para compatibilidade com versões anteriores com caches HTTP/1.0 para definir o comportamento no-cache . Se o cabeçalho Cache-Control estiver presente, o cabeçalho Pragma será ignorado. |
Vary | Especifica que uma resposta armazenada em cache não deve ser enviada, a menos que todos os campos do cabeçalho Vary correspondam tanto na solicitação original da resposta armazenada em cache quanto na nova solicitação. |
RFC 9111: Cache HTTP (Seção 5.2. Cache-Control) requer um cache para honrar um cabeçalho Cache-Control
válido enviado pelo cliente. Um cliente pode fazer solicitações com um valor de cabeçalho no-cache
e forçar o servidor a gerar uma nova resposta para cada solicitação.
Sempre respeitar cabeçalhos Cache-Control
de solicitação de cliente faz sentido se você considerar a meta de cache HTTP. De acordo com a especificação oficial, o cache destina-se a reduzir a latência e a sobrecarga de rede de atender solicitações em uma rede de clientes, proxies e servidores. Não é necessariamente uma maneira de controlar a carga em um servidor de origem.
Não há controle do desenvolvedor sobre esse comportamento de cache ao usar o Middleware de Cache de Resposta porque o middleware segue a especificação oficial de cache. O suporte para cache de saída para controlar melhor a carga do servidor foi adicionado ao .NET 7. Para obter mais informações, confira Cache de Saída.
O ResponseCacheAttribute especifica os parâmetros necessários para definir cabeçalhos apropriados em cache de resposta.
Aviso
Desabilite o cache para conteúdo que contém informações para clientes autenticados. O cache só deve ser habilitado para conteúdo que não é alterado com base na identidade de um usuário ou se um usuário está conectado.
VaryByQueryKeys varia a resposta armazenada pelos valores da lista determinada de chaves de consulta. Quando um único valor de *
é fornecido, o middleware varia as respostas por todos os parâmetros de cadeia de caracteres de consulta de solicitação.
O Middleware de Cache de Resposta deve ser habilitado para definir a propriedade VaryByQueryKeys. Caso contrário, uma exceção de runtime será gerada. Não há um cabeçalho HTTP correspondente para a propriedade VaryByQueryKeys. A propriedade é um recurso HTTP manipulado pelo Middleware de Cache de Resposta. Para que o middleware atenda a uma resposta armazenada em cache, a cadeia de caracteres de consulta e o valor da cadeia de caracteres de consulta devem corresponder a uma solicitação anterior. Por exemplo, considere a sequência de solicitações e resultados mostrados na tabela a seguir:
Solicitação | Retornado de |
---|---|
http://example.com?key1=value1 |
Servidor |
http://example.com?key1=value1 |
Middleware |
http://example.com?key1=NewValue |
Servidor |
A primeira solicitação é retornada pelo servidor e armazenada em cache no middleware. A segunda solicitação é retornada pelo middleware porque a cadeia de caracteres de consulta corresponde à solicitação anterior. A terceira solicitação não está no cache do middleware porque o valor da cadeia de caracteres de consulta não corresponde a uma solicitação anterior.
O ResponseCacheAttribute é usado para configurar e criar (por meio de IFilterFactory) um Microsoft.AspNetCore.Mvc.Internal.ResponseCacheFilter
. O ResponseCacheFilter
executa o trabalho de atualização dos cabeçalhos e recursos HTTP apropriados da resposta. O filtro:
Vary
, Cache-Control
e Pragma
.Esse cabeçalho só é gravado quando a propriedade VaryByHeader é definida. A propriedade definida como o valor da propriedade Vary
. O exemplo a seguir usa a propriedade VaryByHeader:
[ApiController]
public class TimeController : ControllerBase
{
[Route("api/[controller]")]
[HttpGet]
[ResponseCache(VaryByHeader = "User-Agent", Duration = 30)]
public ContentResult GetTime() => Content(
DateTime.Now.Millisecond.ToString());
Visualizar os cabeçalhos de resposta com o Fiddler ou outra ferramenta. Os cabeçalhos de resposta incluem:
Cache-Control: public,max-age=30
Vary: User-Agent
O código anterior requer a adição dos serviços AddResponseCaching do Middleware de Cache de Resposta à coleção de serviços e configura o aplicativo para usar o middleware com o método de extensão UseResponseCaching.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddResponseCaching();
var app = builder.Build();
app.UseHttpsRedirection();
// UseCors must be called before UseResponseCaching
//app.UseCors();
app.UseResponseCaching();
app.UseAuthorization();
app.MapControllers();
app.Run();
NoStore substitui a maioria das outras propriedades. Quando a propriedade é definida como true
, o cabeçalho Cache-Control
é definido como no-store
. Se Location for definido como None
:
Cache-Control
é definido como no-store,no-cache
.Pragma
é definido como no-cache
.Se NoStore for false
e Location for None
, Cache-Control
e Pragma
estiverem definidos como no-cache
.
NoStore normalmente é definido como true
para páginas de erro. O seguinte produz cabeçalhos de resposta que instruem o cliente a não armazenar a resposta.
[Route("api/[controller]/ticks")]
[HttpGet]
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
public ContentResult GetTimeTicks() => Content(
DateTime.Now.Ticks.ToString());
O código anterior inclui os seguintes cabeçalhos na resposta:
Cache-Control: no-store,no-cache
Pragma: no-cache
Para aplicar o ResponseCacheAttribute a todas as respostas do controlador MVC do aplicar ou a respostas de página do Razor Pages, adicione-o com um filtro MVC ou flitro Razor Pages.
Em um aplicativo MVC:
builder.Services.AddControllersWithViews().AddMvcOptions(options =>
options.Filters.Add(
new ResponseCacheAttribute
{
NoStore = true,
Location = ResponseCacheLocation.None
}));
Para obter uma abordagem que se aplica ao Razor Pages do aplicativo, consulte Adicionar ResponseCacheAttribute
à lista de filtros globais do MVC não se aplica ao Razor Pages (dotnet/aspnetcore #18890). O exemplo fornecido no comentário do problema foi escrito para aplicativos direcionados ASP.NET Core antes do lançamento de APIs mínimas em 6.0. Para aplicativos 6.0 ou posteriores, altere o registro de serviço no exemplo para builder.Services.AddSingleton...
para Program.cs
.
Para habilitar o cache, Duration deve ser definido como um valor positivo e Location deve ser Any
(o padrão) ou Client
. A estrutura define o cabeçalho Cache-Control
como o valor do local seguido pelo max-age
da resposta.
LocationAs opções de Any
e Client
traduzem em valores de cabeçalho Cache-Control
de public
e private
, respectivamente. Conforme observado na seção NoStore e Location.None, a configuração Location para None
define os cabeçalhos Cache-Control
e Pragma
como no-cache
.
Location.Any
(Cache-Control
definido como public
) indica que o cliente ou qualquer proxy intermediário pode armazenar em cache o valor, incluindo Middleware de Cache de Resposta.
Location.Client
(Cache-Control
definido private
como ) indica que somente o cliente pode armazenar o valor em cache. Nenhum cache intermediário deve armazenar em cache o valor, incluindo o Middleware de Cache de Resposta.
Os cabeçalhos de controle de cache fornecem diretrizes para clientes e proxies intermediários quando e como armazenar respostas em cache. Não há garantia de que clientes e proxies respeitarão o RFC 9111: cache HTTP. O Middleware de Cache de Resposta sempre segue as regras de cache estabelecidas pela especificação.
O exemplo a seguir mostra os cabeçalhos produzidos pela configuração Duration e deixando o valor padrão Location :
[Route("api/[controller]/ms")]
[HttpGet]
[ResponseCache(Duration = 10, Location = ResponseCacheLocation.Any, NoStore = false)]
public ContentResult GetTimeMS() => Content(
DateTime.Now.Millisecond.ToString());
O código anterior inclui os seguintes cabeçalhos na resposta:
Cache-Control: public,max-age=10
Em vez de duplicar as configurações de cache de resposta em muitos atributos de ação do controlador, os perfis de cache podem ser configurados como opções ao configurar o MVC/Razor Pages. Os valores encontrados em um perfil de cache referenciado são usados como padrões pelo ResponseCacheAttribute e são substituídos por quaisquer propriedades especificadas no atributo .
O exemplo a seguir mostra um perfil de cache de 30 segundos:
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddResponseCaching();
builder.Services.AddControllers(options =>
{
options.CacheProfiles.Add("Default30",
new CacheProfile()
{
Duration = 30
});
});
var app = builder.Build();
app.UseHttpsRedirection();
// UseCors must be called before UseResponseCaching
//app.UseCors();
app.UseResponseCaching();
app.UseAuthorization();
app.MapControllers();
app.Run();
O código a seguir faz referência ao perfil de cache Default30
:
[ApiController]
[ResponseCache(CacheProfileName = "Default30")]
public class Time2Controller : ControllerBase
{
[Route("api/[controller]")]
[HttpGet]
public ContentResult GetTime() => Content(
DateTime.Now.Millisecond.ToString());
[Route("api/[controller]/ticks")]
[HttpGet]
public ContentResult GetTimeTicks() => Content(
DateTime.Now.Ticks.ToString());
}
A resposta de cabeçalho resultante pelo perfil de cache Default30
inclui:
Cache-Control: public,max-age=30
O atributo [ResponseCache]
pode ser aplicado a:
O código a seguir aplica o atributo [ResponseCache]
no nível do controlador e no nível do método:
[ApiController]
[ResponseCache(VaryByHeader = "User-Agent", Duration = 30)]
public class Time4Controller : ControllerBase
{
[Route("api/[controller]")]
[HttpGet]
public ContentResult GetTime() => Content(
DateTime.Now.Millisecond.ToString());
[Route("api/[controller]/ticks")]
[HttpGet]
public ContentResult GetTimeTicks() => Content(
DateTime.Now.Ticks.ToString());
[Route("api/[controller]/ms")]
[HttpGet]
[ResponseCache(Duration = 10, Location = ResponseCacheLocation.Any, NoStore = false)]
public ContentResult GetTimeMS() => Content(
DateTime.Now.Millisecond.ToString());
}
Exibir ou baixar código de exemplo (como baixar)
O cache de resposta reduz o número de solicitações que um cliente ou proxy faz a um servidor Web. O cache de resposta também reduz a quantidade de trabalho que o servidor Web executa para gerar uma resposta. O cache de resposta é controlado por cabeçalhos que especificam como você deseja que o cliente, o proxy e o middleware armazenem respostas em cache.
O [ResponseCache]
participa da configuração de cabeçalhos de cache de resposta. Clientes e proxies intermediários devem respeitar os cabeçalhos para armazenar respostas em cache em RFC 9111: cache HTTP.
Para cache do lado do servidor que segue a especificação de cache HTTP 1.1, use Middleware de cache de resposta. O middleware pode usar as propriedades [ResponseCache]
para definir cabeçalhos de cache do lado do servidor.
RFC 9111: O cache HTTP descreve como os caches de Internet devem se comportar. O cabeçalho HTTP principal usado para cache é Cache-Control, que é usado para especificar diretivas de cache. As diretivas controlam o comportamento de cache à medida que as solicitações passam de clientes para servidores e, à medida que as respostas fazem o caminho dos servidores de volta para os clientes. Solicitações e respostas são movidas por meio de servidores proxy e os servidores proxy também devem estar em conformidade com a especificação de cache HTTP 1.1.
As diretivas Cache-Control
comuns são mostradas na tabela a seguir.
Diretiva | Ação |
---|---|
público | Um cache pode armazenar a resposta. |
private | A resposta não deve ser armazenada por um cache compartilhado. Um cache privado pode armazenar e reutilizar a resposta. |
max-age | O cliente não aceita uma resposta cuja idade é maior que o número especificado de segundos. Exemplos: max-age=60 (60 segundos), max-age=2592000 (1 mês) |
no-cache | Em solicitações: um cache não deve usar uma resposta armazenada para atender à solicitação. O servidor de origem regenera a resposta para o cliente e o middleware atualiza a resposta armazenada em seu cache. Em respostas: a resposta não deve ser usada para uma solicitação subsequente sem validação no servidor de origem. |
no-store | Em solicitações: um cache não deve armazenar a solicitação. Em respostas: um cache não deve armazenar nenhuma parte da resposta. |
Outros cabeçalhos de cache que desempenham uma função no cache são mostrados na tabela a seguir.
parâmetro | Função |
---|---|
Age | Uma estimativa da quantidade de tempo em segundos desde que a resposta foi gerada ou validada com êxito no servidor de origem. |
Expira em | O tempo após o qual a resposta é considerada obsoleta. |
Pragma | Existe para compatibilidade com versões anteriores com caches HTTP/1.0 para definir o comportamento no-cache . Se o cabeçalho Cache-Control estiver presente, o cabeçalho Pragma será ignorado. |
Vary | Especifica que uma resposta armazenada em cache não deve ser enviada, a menos que todos os campos do cabeçalho Vary correspondam tanto na solicitação original da resposta armazenada em cache quanto na nova solicitação. |
RFC 9111: Cache HTTP (Seção 5.2. Cache-Control) requer um cache para honrar um cabeçalho Cache-Control
válido enviado pelo cliente. Um cliente pode fazer solicitações com um valor de cabeçalho no-cache
e forçar o servidor a gerar uma nova resposta para cada solicitação.
Sempre respeitar cabeçalhos Cache-Control
de solicitação de cliente faz sentido se você considerar a meta de cache HTTP. De acordo com a especificação oficial, o cache destina-se a reduzir a latência e a sobrecarga de rede de atender solicitações em uma rede de clientes, proxies e servidores. Não é necessariamente uma maneira de controlar a carga em um servidor de origem.
Não há controle do desenvolvedor sobre esse comportamento de cache ao usar o Middleware de Cache de Resposta porque o middleware segue a especificação oficial de cache. O suporte para o cache de saída para controlar melhor a carga do servidor é uma proposta de design para uma versão futura do ASP.NET Core. Para obter mais informações, consulte Adicionar suporte para cache de saída (dotnet/aspnetcore #27387).
O cache na memória usa a memória do servidor para armazenar dados em cache. Esse tipo de armazenamento em cache é adequado para um único servidor ou vários servidores que usam afinidade de sessão. A afinidade de sessão também é conhecida como sessões permanentes. A afinidade de sessão significa que as solicitações de um cliente são sempre roteadas para o mesmo servidor para processamento.
Para obter mais informações, confira Cache na memória no ASP.NET Core e Solucionar problemas de afinidade de sessão do Gateway de Aplicativo do Azure.
Use um cache distribuído para armazenar dados em memória quando o aplicativo está hospedado em uma nuvem ou no farm de servidores. O cache é compartilhado entre os servidores que processam as solicitações. Um cliente pode enviar uma solicitação tratada por qualquer servidor do grupo se os dados armazenados em cache para o cliente estiverem disponíveis. O ASP.NET Core funciona com caches distribuídos de SQL Server, Redis e NCache.
Para obter mais informações, confira Cache distribuído no ASP.NET Core.
Armazene em cache o conteúdo de uma exibição MVC ou Página Razor com o Auxiliar de Marca de Cache. O Auxiliar de Marca de Cache usa o cache na memória para armazenar dados.
Para obter mais informações, confira Auxiliar de Marca de Cache no ASP.NET Core MVC.
Armazene em cache o conteúdo de uma exibição MVC ou Página Razor em cenários de Web farm ou nuvem distribuída com o Auxiliar de Marca de Cache Distribuído. O Auxiliar de Marca de Cache Distribuído usa SQL Server, Redis ou NCache para armazenar dados.
Para obter mais informações, confira Auxiliar de Marca de Cache Distribuído no ASP.NET Core.
O ResponseCacheAttribute especifica os parâmetros necessários para definir cabeçalhos apropriados em cache de resposta.
Aviso
Desabilite o cache para conteúdo que contém informações para clientes autenticados. O cache só deve ser habilitado para conteúdo que não é alterado com base na identidade de um usuário ou se um usuário está conectado.
VaryByQueryKeys varia a resposta armazenada pelos valores da lista determinada de chaves de consulta. Quando um único valor de *
é fornecido, o middleware varia as respostas por todos os parâmetros de cadeia de caracteres de consulta de solicitação.
O Middleware de Cache de Resposta deve ser habilitado para definir a propriedade VaryByQueryKeys. Caso contrário, uma exceção de runtime será gerada. Não há um cabeçalho HTTP correspondente para a propriedade VaryByQueryKeys. A propriedade é um recurso HTTP manipulado pelo Middleware de Cache de Resposta. Para que o middleware atenda a uma resposta armazenada em cache, a cadeia de caracteres de consulta e o valor da cadeia de caracteres de consulta devem corresponder a uma solicitação anterior. Por exemplo, considere a sequência de solicitações e resultados mostrados na tabela a seguir.
Solicitação | Resultado |
---|---|
http://example.com?key1=value1 |
Retornado do servidor. |
http://example.com?key1=value1 |
Retornado do middleware. |
http://example.com?key1=value2 |
Retornado do servidor. |
A primeira solicitação é retornada pelo servidor e armazenada em cache no middleware. A segunda solicitação é retornada pelo middleware porque a cadeia de caracteres de consulta corresponde à solicitação anterior. A terceira solicitação não está no cache do middleware porque o valor da cadeia de caracteres de consulta não corresponde a uma solicitação anterior.
O ResponseCacheAttribute é usado para configurar e criar (por meio de IFilterFactory) um Microsoft.AspNetCore.Mvc.Internal.ResponseCacheFilter
. O ResponseCacheFilter
executa o trabalho de atualização dos cabeçalhos e recursos HTTP apropriados da resposta. O filtro:
Vary
, Cache-Control
e Pragma
.Esse cabeçalho só é gravado quando a propriedade VaryByHeader é definida. A propriedade definida como o valor da propriedade Vary
. O exemplo a seguir usa a propriedade VaryByHeader:
[ResponseCache(VaryByHeader = "User-Agent", Duration = 30)]
public class Cache1Model : PageModel
{
Usando o aplicativo de exemplo, visualize os cabeçalhos de resposta com as ferramentas de rede do navegador. Os seguintes cabeçalhos de resposta são enviados com a resposta da página Cache1:
Cache-Control: public,max-age=30
Vary: User-Agent
NoStore substitui a maioria das outras propriedades. Quando a propriedade é definida como true
, o cabeçalho Cache-Control
é definido como no-store
. Se Location for definido como None
:
Cache-Control
é definido como no-store,no-cache
.Pragma
é definido como no-cache
.Se NoStore for false
e Location for None
, Cache-Control
e Pragma
estiverem definidos como no-cache
.
NoStore normalmente é definido como true
para páginas de erro. A página Cache2 no aplicativo de exemplo produz cabeçalhos de resposta que instruem o cliente a não armazenar a resposta.
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public class Cache2Model : PageModel
{
O aplicativo de exemplo retorna a página Cache2 com os seguintes cabeçalhos:
Cache-Control: no-store,no-cache
Pragma: no-cache
Para aplicar o ResponseCacheAttribute a todas as respostas do controlador MVC do aplicar ou a respostas de página do Razor Pages, adicione-o com um filtro MVC ou flitro Razor Pages.
Em um aplicativo MVC:
services.AddMvc().AddMvcOptions(options =>
options.Filters.Add(
new ResponseCacheAttribute
{
NoStore = true,
Location = ResponseCacheLocation.None
}));
Para obter uma abordagem que se aplica ao Razor Pages do aplicativo, consulte Adicionar ResponseCacheAttribute
à lista de filtros globais do MVC não se aplica ao Razor Pages (dotnet/aspnetcore #18890).
Para habilitar o cache, Duration deve ser definido como um valor positivo e Location deve ser Any
(o padrão) ou Client
. A estrutura define o cabeçalho Cache-Control
como o valor do local seguido pelo max-age
da resposta.
LocationAs opções de Any
e Client
traduzem em valores de cabeçalho Cache-Control
de public
e private
, respectivamente. Conforme observado na seção NoStore e Location.None, a configuração Location para None
define os cabeçalhos Cache-Control
e Pragma
como no-cache
.
Location.Any
(Cache-Control
definido como public
) indica que o cliente ou qualquer proxy intermediário pode armazenar em cache o valor, incluindo Middleware de Cache de Resposta.
Location.Client
(Cache-Control
definido private
como ) indica que somente o cliente pode armazenar o valor em cache. Nenhum cache intermediário deve armazenar em cache o valor, incluindo o Middleware de Cache de Resposta.
Cabeçalhos de controle de cache apenas fornecem diretrizes para clientes e proxies intermediários quando e como armazenar respostas em cache. Não há garantia de que clientes e proxies respeitarão o RFC 9111: cache HTTP. O Middleware de Cache de Resposta sempre segue as regras de cache estabelecidas pela especificação.
O exemplo a seguir mostra o modelo de página Cache3 do aplicativo de exemplo e os cabeçalhos produzidos pela configuração Duration e deixando o valor padrão Location :
[ResponseCache(Duration = 10, Location = ResponseCacheLocation.Any, NoStore = false)]
public class Cache3Model : PageModel
{
O aplicativo de exemplo retorna a página Cache3 com o seguinte cabeçalho:
Cache-Control: public,max-age=10
Em vez de duplicar as configurações de cache de resposta em muitos atributos de ação do controlador, os perfis de cache podem ser configurados como opções ao configurar o MVC/Razor Pages em Startup.ConfigureServices
. Os valores encontrados em um perfil de cache referenciado são usados como padrões pelo ResponseCacheAttribute e são substituídos por quaisquer propriedades especificadas no atributo .
Configurar um perfil de cache. O exemplo a seguir mostra um perfil de cache de 30 segundos no aplicativo de exemplo Startup.ConfigureServices
:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddMvc(options =>
{
options.CacheProfiles.Add("Default30",
new CacheProfile()
{
Duration = 30
});
});
}
O modelo de página Cache4 do aplicativo de exemplo faz referência ao perfil de Default30
cache:
[ResponseCache(CacheProfileName = "Default30")]
public class Cache4Model : PageModel
{
O ResponseCacheAttribute pode ser aplicado em:
O cabeçalho resultante aplicado à resposta da página Cache4 pelo perfil de cache Default30
:
Cache-Control: public,max-age=30
Comentários do ASP.NET Core
O ASP.NET Core é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
Campeonato Mundial de Visualização de Dados do Power BI
14 de fev., 16 - 31 de mar., 16
Com 4 chances de participar, você pode ganhar um pacote de conferência e chegar à Grande Final AO VIVO em Las Vegas
Saiba mais