如何将对象添加到高速缓存和缓存MVC4访问数据?(How to add an object to a

2019-09-24 04:30发布

大家好我有它返回这样数据的对象

         var productdetial=  {
                               "productId": "1",
                               "productname": "Casualshirts",
                               "productSkus": [
                                                   {
                                                     "Skuimage": "URL",
                                                     "SKU": [
                                                               {
                                                                  "ProducSKU": "Shoe1001",
                                                                  "Options": [
                                                                                {
                                                                                  "productOptions": [
                            {
                                "OptionID": "1",
                                "optionname": "Color",
                                "value": "Black"
                            },
                            {
                                "OptionID": "2",
                                "optionname": "Size",
                                "value": "S"
                            },
                            {
                                "OptionID": "3",
                                "optionname": "Fit",
                                "value": "Regular"
                            }
                        ]
                    }
                ]
            },
            {
                "ProducSKU": "Shoe1002",
                "Options": [
                    {
                        "productOptions": [
                            {
                                "OptionID": "1",
                                "optionname": "Color",
                                "value": "Red"
                            },
                            {
                                "OptionID": "2",
                                "optionname": "Size",
                                "value": "S"
                            },
                            {
                                "OptionID": "3",
                                "optionname": "Fit",
                                "value": "Regular"
                            }
                        ]
                    }
                ]
            },
            {
                "ProducSKU": "Shoe1003",
                "Options": [
                    {
                        "productOptions": [
                            {
                                "OptionID": "1",
                                "optionname": "Color",
                                "value": "Orange"
                            },
                            {
                                "OptionID": "2",
                                "optionname": "Size",
                                "value": "S"
                            },
                            {
                                "OptionID": "3",
                                "optionname": "Fit",
                                "value": "Regular"
                            }
                        ]
                    }
                ]
            }
        ]

现在我想是我想保留在缓存中这个数据,我这个数据绑定到我的看法,现在我想的是当过我从提出请求我现在我应该能够从上述目的访问数据whihc在高速缓存中......惨啊纽约一个帮助我,我怎么能做到这一点我如何这个对象从那里添加到高速缓存和访问数据

Answer 1:

你可以把这个应用程序缓存中,这样就可以从任何地方访问它。

HttpContext.Current.Application["productdetial"] = productdetial;

然后你可以从任何地方访问它像这样

ProductDetails object = (ProductDetails) HttpContext.Current.Application["productdetial"]

如果你想存储和检索这个字符串不是也这是可能的。 请注意,如果你需要缓存特定于用户会话,然后使用“会话”表,而不是“应用程序”

有高速缓冲存储器的OutputCache的另一种类型的可以在控制器操作,如下所示来施加。 在300秒的时间,这将提供缓存的输出到客户端。

[OutputCache(Duration=300, VaryByParam="none")]
 public ActionResult GetProductDetails()
 {
      //Fetch the data once and it will be cached for 300 seconds       
            return View(data);
 }

看起来你需要上述2之一还有其他类型的缓存也像甜甜圈缓存和甜甜圈洞的缓存,如果你只想要查看的某些部分会被缓存,均适用。 在环形孔缓存可以包括上述缓存动作到另一个视图,作为动作。



Answer 2:

您可以使用HttpContext的缓存:

if(HttpContext.Cache.Get("productdetial") == null)
{
  HttpContext.Cache.Add("productdetial", productdetial, null, Cache.NoAbsoluteExpiration,
                                          new TimeSpan(0, 1, 0), CacheItemPriority.Normal, null);
}else
{
  cached = (ProductDetails) HttpContext.Cache.Get("productdetial");
}


文章来源: How to add an object to a Cache and Access the data from cache in MVC4?