4

ASP.NET でキャッシュを実現するには、どのような状況でクエリ文字列 (VaryByParam) を使用する必要がありますか?

Webアプリケーションの場合の実際の状況の例を誰か挙げてもらえますか?

4

2 に答える 2

2

最も典型的な例は次 のとおりです。製品カタログ

次のような URL 構造を持つ場合があります。

http://www.myshop.com/Catalog/ViewAllProducts.aspx

http://www.myshop.com/Catalog/ViewAllProducts.aspx?PageNum=123&PageSize=50

http://www.myshop.com/Catalog/ViewProduct.aspx?ProductID=12345

最初の URL は、すべての製品の完全なリストです。ここにはクエリ文字列はありませんが、2 番目の URL は同じページですが、ページネーションがあります。ページ番号 (PageNum) とページあたりのアイテム数 (PageSize) はどちらもクエリ文字列であるため、ユーザーが製品リストを並べ替えることができないと仮定すると、2 人の異なるユーザーが次を要求します。

http://www.myshop.com/Catalog/ViewAllProducts.aspx?PageNum=123&PageSize=50

URL は同じ情報を取得します。最初のリクエストはこのデータをキャッシュできるため、後の 2 番目のリクエストはデータベースに戻って製品アイテム (およびそれらに関連する詳細 (価格、説明など) を取得) を表示する必要がなくなります。 .

3 番目の URL は、単一のクエリ文字列パラメーターとして製品 ID (データベースからの一意の識別子である可能性があります) を含む単一の製品詳細画面です。これに対する複数のリクエストは、ほとんどの場合、同じデータを返す必要があります (その特定の製品の価格、説明、またはその他の要素が頻繁に変更されない限り)。"ProductID" クエリ文字列 (および製品ごとに異なる値) に基づくキャッシュは、データベースの負荷を大幅に軽減します。キャッシュ期間が長すぎないようにすることで、実際のバックエンド データベース データが変更された場合に、適切な時間内にキャッシュが期限切れになることが保証されます。

于 2009-07-24T15:06:23.170 に答える