2016-04-19 2 views
0

Я знаю, что OutputCache не готов к ASP.NET Ядра, но я читал о OutputCache, и вы можете настроить его в web.config, как это:OutputCache IIS с MVC и ASP.NET Ядра в лазури

<configuration> 
    <location path="showStockPrice.asp">  
     <system.webserver>   
     <caching>   
      <profiles> 
      <add varybyquerystring="*"location="Any" 
       duration="00:00:01" policy="CacheForTimePeriod"    
       extension=".asp"> 
      </profiles> 
     </caching> 
     </system.webserver> 
    </location> 
</configuration> 

Могу ли я confifure мой web.config для использования OutputCache Web.Config для маршрутов MVC?

Например:

http://www.example.com/View/Index/123562

Если параметр VaryByParam является 123562.

Спасибо.

ответ

0

Вы можете использовать класс IMemoryCache, чтобы сохранить результаты. Пример использования Microsoft можно найти here.

Вот простой пример:

public class HomeController : Controller 
{ 
    private readonly IMemoryCache _cache; 

    public HomeController(IMemoryCache cache) 
    { 
     _cache = cache; 
    } 

    public IActionResult About(string id) 
    { 
     AboutViewModel viewModel; 

     if (!_cache.TryGetValue(Request.Path, out result)) 
     { 
      viewModel= new AboutViewModel(); 
      _cache.Set(Request.Path, viewModel, new MemoryCacheEntryOptions() 
      { 
       AbsoluteExpiration = DateTime.Now.AddHours(1) 
      }); 
     } 
     return View(viewModel); 
    } 
} 
+0

Благодаря будет, но мне нужно кэшировать вывод, а не DTO или объект;) – chemitaxis

+1

Вы смотрели на [ResponseCacheAttribute] (https: // GitHub .com/ASPnet/Mvc/блоб/df4b92b1c12dcea122a730b618b33a0b39496561/SRC/Microsoft.AspNet.Mvc.Core/Фильтры/ResponseCacheAttribute.cs)? Это по крайней мере кэширует результат на стороне клиента. –

+0

Да, я знаю это ... Но это не то же самое ... – chemitaxis

Смежные вопросы