Когда вы хотите что-то кэшировать, не доверяйте клиенту.Клиент может легко проигнорировать это и спрашивать ваш API снова и снова.Лучшим подходом было бы использовать методы кэширования на стороне сервера.
Однако для решения вашей проблемы можно использовать ResponseCacheAttribute .Вот пример.
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
namespace WebApplication1.Controllers
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
[ResponseCache(Duration = 123, VaryByHeader = "User-Agent")]
public IEnumerable<string> Get()
{
return new string[] {"value1", "value2"};
}
}
}
В случае, если вы обслуживаете статические файлы.Кэширование достигается путем настройки его в файле Startup.cs вашего проекта.
Вот пример:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using Microsoft.Net.Http.Headers; // required
namespace WebApplication1
{
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var durationInSeconds = (int) TimeSpan.FromDays(1).TotalSeconds;
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
{
context.Context.Response.Headers[HeaderNames.CacheControl] =
$"public,max-age={durationInSeconds}";
}
});
app.UseMvc();
}
}
}