我有一個ASP.NET MVC應用程序,其中某些資源都是這樣解決的:選擇基於查詢字符串的OutputCache政策
/controller/action/id?revision=123
的修訂參數是可選的:
- 如果是缺少我做的302重定向到最新版本。我希望這個重定向響應只被緩存一小會兒,或者根本不需要。
- 如果它存在,我想緩存響應很長一段時間,因爲任何給定的資源修訂都是不可變的。
我第一次嘗試是做這樣的事情:
[OutputCache(Duration=10,Location=OutputCacheLocation.Server)]
public Action(string id)
{
long lastRevision = GetLastRevision(id);
return RedirectToAction("Action",
new { Id = id, revision = lastRevision });
}
[OutputCache(Duration=int.MaxValue,Location=OutputCacheLocation.Server)]
public Action(string id, long revision)
{
// ...
}
不幸的是,ASP.NET MVC路由似乎並不喜歡方法重載。它希望只有一個Action
方法,並帶有一個可選參數(即long? revision
),但我無法爲這兩種情況指定不同的緩存策略。
如何根據查詢字符串的存在情況選擇不同的緩存策略?