Можете ли вы использовать несколько параметров VaryByCustom при кэшировании пользовательского элемента управления?
Вопрос
Я пробовал это несколькими разными способами, но по какой-то причине это не работает.Возможно ли это вообще?
Решение
Да.Разделяйте их в объявлении точкой с запятой.
Другие советы
Если вы переопределяете GetVaryByCustomString() в файле Global.asax.cs, вы можете передать список значений, разделенных точкой с запятой, которые затем необходимо проанализировать.
Существует одно встроенное значение (Браузер), которое будет использоваться, если указанный атрибут не существует.
Вы можете использовать несколько параметров, разделяя их точкой с запятой, но логику их разделения придется реализовать самостоятельно. Это означает, что вы можете использовать любой символ в качестве разделителя, поскольку вам придется анализировать его самостоятельно.
Вы, вероятно, переопределяете GetVaryByCustomString(HttpContext context, string custom)
в вашем global.asax.А custom
параметр будет содержать все, что вы передаете, используя VaryByCustom
, так
<%@ OutputCache Duration="86400" VaryByParam="none" VaryByCustom="custom1;custom2" %>
Дополнительное примечание: base.GetVaryByCustomString
не реализует никаких возможностей разделения строк и будет что-то делать только тогда, когда browser
передается как значение.В противном случае он вернется null
.