0

私の場合、コントローラーがあります。コントローラーは、RedirectResultを使用してユーザーをクエリし、転送します。コントローラーは、実際にはヘッダー「Location」を実行しました。

次に、このようにキャッシュをコントローラーに適用します

[OutputCache(Duration = int.MaxValue, VaryByParam = "none", NoStore=false)]

ページを再実行しようとしましたが、Linqプロファイラーを確認しましたが、そのページのすべてのクエリが1のように再実行されているのを確認できます。

どうすればこれを防ぐことができますか?

4

1 に答える 1

1

クエリをキャッシュする出力キャッシュを使用する代わりに、手動キャッシュを実行できます。

public IQueryable<Category> FindAllCategories()
{
    if (HttpContext.Current.Cache["AllCategories"] != null)
        return (IQueryable<Category>)HttpContext.Current.Cache["AllCategories"];
    else
    {
        IQueryable<Category> allCats =  from c in db.Categories
                                          orderby c.Name
                                          select c;

        // set cache
        HttpContext.Current.Cache.Add("AllCategories", allCats, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, 30, 0, 0), System.Web.Caching.CacheItemPriority.Default, null);
        return allCats;
    }
}
于 2010-01-14T04:50:46.160 に答える