【问题标题】:How to access IMemoryCache from C# and Javascript如何从 C# 和 Javascript 访问 IMemoryCache
【发布时间】:2018-11-08 11:53:54
【问题描述】:

我使用依赖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 文件中访问缓存?

【问题讨论】:

  • 你能解释一下从javascript文件访问缓存是什么意思吗? Javascript 正在客户端(浏览器)上执行,无法直接访问服务器上的缓存。
  • 如果我理解正确你想要做的基本上是从你的服务器发送一个 json 对象到客户端并用 js 抓取它?不知道你是否可以使用 IMemoryCache 做到这一点。
  • 哦,那我需要另一种方法,谢谢

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    IMemoryCache 允许您通过将数据存储在“内存中”来加速应用程序。因此,您可以从您的 javascript 代码中获取内存。

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

    我建议您在后端获取缓存数据并将其放入 cookie。然后稍后您可以从您的 javascript 代码中获取 cookie 值。

    我假设你有一个名为 _cache 的 IMemoryCache 实例。

    你可以这样设置缓存。

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

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

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

    如果你想使用 DOM:

    var x = document.cookie;
    

    对于 jquery,请查看 StackOverFlow 上的这个答案: https://stackoverflow.com/a/1599367/1261525

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多