Использовать кэширование вывода VaryByParam с JSON-запросом
У меня есть действие контроллера, который получает Person
параметр типа. Параметр связан с запросом JSON с помощью функции привязки модели на основе JSON.
мой VaryByParam
в этом случае не работает, потому что запрос не содержит никаких "классических" переменных (например, GET или POST), но в этом случае данные находятся в теле HTTP. На стороне клиента я использую KnockoutJS
поэтому я публикую данные с помощью ko.toJSON
метод.
Как я могу добиться кэширования вывода на основе значения поля в запросе JSON?
Пример только для демонстрации.
// model
public class Person {
public int PersonID { get; set; }
public string Name { get; set; }
}
// action
[OutputCaching(Duration = 60, VaryByParam = "PersonID")]
public JsonResult Process(Person person) {
...
}
// client-side
$.post({
url: '/mycontroller/myaction',
...
data: ko.toJSON(personViewModel),
...
});
1 ответ
VaryByCustom
твой друг!
Переопределить VaryByCustom
метод в вашем global.asax.cs
файл. Это позволяет вам создать свою собственную проверку и, поскольку у вас есть доступ к HTTPContext, вы сможете проверить значения сообщений из тела сообщения.
Проверьте этот блог, который объясняет, как вы можете создать свою собственную реализацию.
Надеюсь это поможет