0

レンダリング アクションを呼び出すマスター ページがあります。

<% Html.RenderAction("CategoryList", "Category", new { selectedCategoryId = Model.selectedCategoryId });  %>

アクションは次のようになります。

[ChildActionOnly]
[OutputCache(Duration = 10, VaryByParam = "none")]
public ActionResult CategoryList(int? selectedCategoryId)
{

    CategoryList cl = CategoryManager.GetList();
    if (selectedCategoryId.HasValue)
        CategoryManager.SetSelectedCategory(cl, selectedCategoryId.Value);
    return PartialView(cl);
}

しかし、SQL プロファイラーを実行すると、GetList() クエリが常に呼び出され、アクションがキャッシュされていないことがわかります。

私が間違っていることは何ですか?

ありがとう!

4

2 に答える 2

1

これは子アクションであり、最終的な HTML の一部に過ぎず、キャッシュできないことを意味します。HTML チェックアウトのフラグメントをキャッシュするには、このブログ投稿.

于 2010-08-26T15:51:18.267 に答える
0

簡単です。OutputCacheAttribute を使用します。

[OutputCache(Duration=60, VaryByParam="None")]
public ActionResult CacheDemo() {
  return View();
}

気をつけて、ラギムズ

于 2010-08-26T17:48:40.170 に答える