如何在Asp.net核心中缓存资源?

时间:2015-02-01 23:12:50

标签: asp.net-core asp.net-core-mvc

你能指点我一个例子吗?我想缓存一些在网站上的大多数页面中经常使用的对象?我不确定在MVC 6中推荐的方法是什么。

3 个答案:

答案 0 :(得分:15)

在ASP.NET Core中执行此操作的建议方法是使用IMemoryCache。您可以通过DI检索它。例如,CacheTagHelper使用它。

希望这应该给你足够的信息来开始缓存你的所有对象:)

答案 1 :(得分:13)

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 :(得分:3)

我认为目前在ASP.net MVC 5中没有可用的OutputCache属性。

大多数属性只是快捷方式,它将间接使用缓存提供程序ASP.net。

ASP.net 5 vnext中提供的内容相同。 https://github.com/aspnet/Caching

这里提供了不同的缓存机制,您可以使用内存缓存并创建自己的属性。

希望这对你有所帮助。