2

こんにちは、私はこのようなデータを返すオブジェクトを持っています

         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"
                            }
                        ]
                    }
                ]
            }
        ]

今私が欲しいのは、このデータをキャッシュに保持したいということです。このデータをビューにバインドしています。今私が欲しいのは、今からリクエストを行うときはいつでも、上記のオブジェクトからデータにアクセスできるはずですどれがキャッシュ内にありますか...どうすればこれを行うことができますか?このオブジェクトをキャッシュに追加し、そこからデータにアクセスするにはどうすればよいですか?

4

2 に答える 2

4

どこからでもアクセスできるように、これをアプリケーション キャッシュに入れることができます。

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のいずれかが必要なようです。ビューの一部のみをキャッシュしたい場合に適用できるドーナツキャッシングやドーナツホールキャッシングなど、他のタイプのキャッシングもあります。ドーナツ ホール キャッシングでは、上記のキャッシュされたアクションをアクションとして別のビューに含めることができます。

于 2012-10-16T06:48:49.020 に答える
3

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");
}
于 2012-10-26T05:48:06.597 に答える