他の VaryByParam の質問を見てみましたが、私の質問に対する答えを見つけることができませんでした。次のアクションが定義されている MVC サイトがあります。
[OutputCache(Duration = 30, VaryByParam = "TargetID")]
public JsonResult IsThingAllowed(int TargetID)
{
bool isAllowed = IsAllowed(TargetID);
return Json(isAllowed, JsonRequestBehavior.AllowGet);
}
TargetID に何が入っても、キャッシュされた値が返されます。ただし、TargetID
be に変更すると*
、期待どおりに動作します (キャッシュされた値は によって異なりますTargetID
)。
[OutputCache(Duration = 30, VaryByParam = "*")]
AJAX 呼び出しは次のとおりです。
$.ajax({
url: "/MyController/IsThingAllowed",
type: "POST",
data: JSON.stringify({ "TargetID": id }), // This is definitely varying!
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, xhr) {
updateThing(data);
},
error: function (xhr, textStatus, error) {
}
});
パラメータが明示的に指定されている場合、何が間違っていますか?
編集: ..GET
の代わりに 使用すると機能しますが、 を使用すると機能するため、明らかに機能します。POST
POST
*
これは次のように動作しGET
ます:
$.ajax({
url: "/MyController/IsThingAllowed",
type: "GET",
data: { TargetID: id },
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, xhr) {
updateThing(data);
},
error: function (xhr, textStatus, error) {
}
});