Не могли бы вы указать на пример. Я хочу кэшировать некоторые объекты, которые будут часто использоваться на большинстве страниц на веб-сайте? Я не уверен, какой будет рекомендуемый способ сделать это в MVC 6.
Как кэшировать ресурсы в ядре Asp.net?
Ответ 1
В startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// Add other stuff
services.AddCaching();
}
Затем в контроллер добавьте IMemoryCache
в конструктор, например. для HomeController:
private IMemoryCache cache;
public HomeController(IMemoryCache cache)
{
this.cache = cache;
}
Затем мы можем установить кеш с помощью:
public IActionResult Index()
{
var list = new List<string>() { "lorem" };
this.cache.Set("MyKey", list, new MemoryCacheEntryOptions()); // Define options
return View();
}
(с установленным options)
И прочитайте из кеша:
public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
var list = new List<string>();
if (!this.cache.TryGetValue("MyKey", out list)) // read also .Get("MyKey") would work
{
// go get it, and potentially cache it for next time
list = new List<string>() { "lorem" };
this.cache.Set("MyKey", list, new MemoryCacheEntryOptions());
}
// do stuff with
return View();
}
Ответ 2
Рекомендуемый способ сделать это в ASP.NET Core - использовать IMemoryCache
. Вы можете получить его через DI. Например, CacheTagHelper
использует его.
Надеюсь, это даст вам достаточно информации, чтобы начать кешировать все ваши объекты:)
Ответ 3
Я думаю, что в настоящее время нет такого атрибута OutputCache, который доступен в ASP.net MVC 5.
В основном атрибут - это просто ярлык, и он косвенно использует поставщик кэшей ASP.net.
То же самое можно найти в ASP.net 5 vnext. https://github.com/aspnet/Caching
Здесь доступен другой механизм кэша, и вы можете использовать Memory Cache и создать свой собственный атрибут.
Надеюсь, что это поможет вам.