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