2

通常、キャッシングを行い、次のような Request.QueryString 値に依存できます。

<%@ OutputCache Duration="15" VaryByParam="search" %>

そのような URL は次のようになります。

http://www.demo.com/default.aspx?search=name

しかし、私のアプリケーションでは、次のような製品の ID を渡す ASP.NET 4.0 ルーティングを使用しています。

 http://www.demo.com/searchdetails/40563

また

http://www.demo.com/searchdetails/40564

等々.....

この場合、製品IDに次のようにアクセスします

 Page.Route.Value["product_id"]

この場合、このルート値に対するページの依存関係をどのように作成する必要がありますか。

私はキャッシングが初めてなので、同じことについてあまり知識がありません。

カスタムキャッシングを行う必要がありますか。

4

1 に答える 1

2

VaryByCustom を使用する必要があると思います。このようなもの:

<%@ OutputCache Duration="15" VaryByParam="None" VaryByCustom="productIdInUrl" %>

次に、カスタム フィルターを global.asax ファイルに追加します。

public override string GetVaryByCustomString(HttpContext context, 
string arg)
{
   if(arg == "productIdInUrl")
   {
      return context.Request.RawUrl;
   }
   return base.GetVaryByCustomString(context, arg);
}

これは、productId だけでなく、すべての URL で異なります。必要に応じて、より巧妙なことを行うために Request オブジェクトでさらに作業を行うことができると思います

于 2013-02-24T20:31:38.483 に答える