Как получить доступ к IMemoryCache из C # и Javascript - PullRequest
0 голосов
/ 08 ноября 2018

Я сохранил значения в своем кэше, используя класс Controller, используя зависимость IMemoryCache. Я также получаю доступ к своему кешу и получаю из него несколько значений, например:

//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 голосов
/ 08 ноября 2018

IMemoryCache позволяет вам ускорить ваше приложение, храня ваши данные «в памяти». Таким образом, вы можете получить доступ к памяти из вашего кода JavaScript.

Пожалуйста, ознакомьтесь с документацией IMemoryCache здесь: https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-2.1

Я хотел бы предложить вам получить кэшированные данные на стороне сервера и поместить их в cookie. Затем вы можете получить значение cookie из вашего кода JavaScript.

Я предполагаю, что у вас есть экземпляр IMemoryCache с именем _cache.

Вы можете установить кеш следующим образом.

 _cache.Set(cacheKey, cacheEntry, cacheEntryOptions);

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

или вы можете сделать то же самое после получения кэшированных данных. Просто получите данные из вашей памяти и установите их в cookie.

Вы можете получить cookie из вашего Javascript, используя как DOM, так и JQuery.

Если вы хотите использовать DOM:

var x = document.cookie;

Для jquery посмотрите этот ответ на StackOverFlow: https://stackoverflow.com/a/1599367/1261525

0 голосов
/ 08 ноября 2018

Кэш находится на сервере, в то время как JavaScript выполняется на клиенте. Единственный способ, о котором я могу подумать, - это создать контроллер кеша и создать для него действие Get. После этого вы вызываете это действие в Ajax и асинхронно получаете значение кэша сервера.

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