Вы можете использовать директиву VaryByParam:
VaryByParam: этот атрибут позволяет нам
контролировать, сколько кэшированных версий
страница должна быть создана на основе
пары имя / значение, отправленные через HTTP
POST / GET. Значением по умолчанию является None.
Ничто не подразумевает, что только одна версия
страница добавляется в кэш, и
все параметры HTTP GET / POST
просто игнорируется. Противоположность
Ни одно значение не является *. Звездочка подразумевает
что все пары имя / значение переданы в
должны быть использованы для создания кэшированных
версии страницы. Зернистость
может контролироваться, однако, путем присвоения имен
параметры (несколько имен параметров
разделяются точкой с запятой).
Используется как так в директиве страницы
<%@ OutputCache Duration="10800" VaryByParam="State;City" %>
Будьте осторожны с тем, что вы используете в VaryByParam, так как это может привести к тому, что количество копий страницы в памяти будет соответствовать количеству существующих значений вашего параметра.
РЕДАКТИРОВАТЬ: как упоминалось в комментариях, это не будет работать, если вы используете куки для входа в систему, но некоторые люди используют логин без cookie, который помещает информацию в часть GET / POST.
Подробнее см. здесь