3

これが私のコントローラーメソッドです。サーバー上で次のメソッドの出力キャッシュを作成する方法を誰でも説明できますか?

    public JsonResult GetCenterByStateCityName(string name, string state, string city, bool sportOnly, bool rvpOnly)
    {
        var result = GetCenterServiceClient().GetCentersByLocation(name, city, state, sportOnly, rvpOnly).OrderBy(c => c.Name).ToList();
        return Json(result);
    }

ありがとうございました

4

2 に答える 2

5

ドキュメントを見ましたか?

http://msdn.microsoft.com/en-us/library/system.web.mvc.outputcacheattribute.aspx

簡単に言えば、アクションに属性を設定するだけです

[OutputCache(CacheProfile = "SaveContactProfile", Duration = 10)]
public JsonResult SaveContact(Contact contact)
{
    var result = GetContactServiceClient().SaveContact(contact);
    return Json(result);
}

- アップデート -

jQuery 経由で直接 Ajax 呼び出しを行っている場合、OutPutCache は、デフォルトで true に設定されている「キャッシュ」パラメーターに基づいて無視される可能性があります。

たとえば、次のようなことをしている場合、パラメーターは無視されます。

$.ajax({
    url: someUrlVar,
    cache: true, /* this is true by default */
    success : function(data) {

    }
});

2 つの方法で呼び出しをキャッシュできるので、注目すべき点です。

参照:

于 2012-07-23T15:40:50.637 に答える
3
[OutputCache(Duration = 3600, VaryByParam = "name;state;city;sportOnly;rvpOnly")]
public JsonResult GetCenterByStateCityName(string name, string state, string city, bool sportOnly, bool rvpOnly)
{
        var result = GetCenterServiceClient().GetCentersByLocation(name, city, state, sportOnly, rvpOnly).OrderBy(c => c.Name).ToList();
        return Json(result);
}

ここでのDuration値は 3600 秒です。したがって、キャッシュは 1 時間有効です。VaryByParamパラメータごとに異なる結果が必要なため、プロパティ値を指定する必要があります。

于 2012-07-23T15:51:31.917 に答える