如何从C#和Javascript访问IMemoryCache

时间:2018-11-08 11:53:54

标签: javascript c# asp.net-core-mvc asp.net-core-2.0

我使用依赖项IMemoryCache使用Controller类将值存储在缓存中。我也正在访问缓存,并从中获取一些值,如下所示:

//IMemoryCache initailized before this variable : _cache
public void foo()
{
   var token = _cache.Get<TokenModel>("Token" + HttpContext.Session.GetString("TokenGuid"));
   //Do something with token
}

问题是:
如何从我的Javascript文件访问缓存?

2 个答案:

答案 0 :(得分:0)

在客户端上执行JavaScript时,缓存位于服务器上。我能想到的唯一方法是创建一个缓存控制器并在其上创建一个Get操作。之后,您将在Ajax中调用此操作并异步获取服务器缓存值。

public class CacheController : Controller
{
   [HttpGet("{key}")]
   public IActionResult GetCacheValue(string key)
   {
       var cacheValue = //get your cache
       return Json(cacheValue);
   }
}

答案 1 :(得分:0)

IMemoryCache允许您通过“在内存中”存储数据来加快应用程序的速度。这样您就可以通过JavaScript代码访问内存。

请在此处查看IMemoryCache的文档:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-2.1

我建议您将后端的缓存数据放入cookie中。然后,您可以从JavaScript代码中获取Cookie值。

我假设您有一个IMemoryCache实例,名称为_cache。

您可以这样设置缓存。

     //Function for when the mouse button is clicked.
canvas.onmousedown = function (e) {
    //The mouse button is clicked (true).
    mouse.click = true;
    ctx.fillStyle = 'red';
};

,否则您可以在获取缓存的数据后执行相同的操作。只需从内存中获取数据并将其设置为cookie。

您可以使用DOM或JQuery从Javascript获取cookie。

如果您想使用DOM:

 _cache.Set(cacheKey, cacheEntry, cacheEntryOptions);

HttpCookie myCookie = new HttpCookie("yourCookieName");
myCookie["cacheData"] = cacheEntry;
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);

对于jquery,请在StackOverFlow上查看以下答案: https://stackoverflow.com/a/1599367/1261525