如何在 Asp.net 核心中缓存资源?
How to cache resources in Asp.net core?
你能给我举个例子吗?我想缓存一些将在网站上的大部分页面中频繁使用的对象?我不确定在 MVC 6 中推荐的做法是什么。
我认为目前 ASP.net MVC 5 中没有类似 OutputCache 的可用属性。
大多数属性只是快捷方式,它将间接使用缓存提供程序ASP.net。
ASP.net 5 vnext 中提供相同的内容。
https://github.com/aspnet/Caching
此处提供了不同的缓存机制,您可以使用内存缓存并创建自己的属性。
希望对您有所帮助。
在 ASP.NET 核心中推荐的方法是使用 IMemoryCache
。您可以通过 DI 检索它。例如,CacheTagHelper
使用它。
希望这能为您提供足够的信息来开始缓存您的所有对象:)
在startup.cs
中:
public void ConfigureServices(IServiceCollection services)
{
// Add other stuff
services.AddCaching();
}
然后在控制器中,将 IMemoryCache
添加到构造函数中,例如对于家庭控制器:
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();
}
你能给我举个例子吗?我想缓存一些将在网站上的大部分页面中频繁使用的对象?我不确定在 MVC 6 中推荐的做法是什么。
我认为目前 ASP.net MVC 5 中没有类似 OutputCache 的可用属性。
大多数属性只是快捷方式,它将间接使用缓存提供程序ASP.net。
ASP.net 5 vnext 中提供相同的内容。 https://github.com/aspnet/Caching
此处提供了不同的缓存机制,您可以使用内存缓存并创建自己的属性。
希望对您有所帮助。
在 ASP.NET 核心中推荐的方法是使用 IMemoryCache
。您可以通过 DI 检索它。例如,CacheTagHelper
使用它。
希望这能为您提供足够的信息来开始缓存您的所有对象:)
在startup.cs
中:
public void ConfigureServices(IServiceCollection services)
{
// Add other stuff
services.AddCaching();
}
然后在控制器中,将 IMemoryCache
添加到构造函数中,例如对于家庭控制器:
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();
}