2016-04-19 103 views
0

我知道的OutputCache沒有準備好ASP.NET核心,但我看過的OutputCache,你可以在web.config中像這樣進行配置:輸出緩存IIS與MVC和ASP.NET核心Azure中

<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> 

我可以配置我的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/BLOB/df4b92b1c12dcea122a730b618b33a0b39496561/src目錄/ Microsoft.AspNet.Mvc.Core /過濾器/ ResponseCacheAttribute.cs)?這至少會緩存客戶端的結果。 –

+0

是的,我知道它......但它不一樣...... – chemitaxis