AFAIK, ключевое различие в том, что сессия на пользователя, а кеш будет для элементов области приложения.
Как отмечено в других ответах, вы можете хранить информацию о пользователях в кеше, при условии, что вы предоставляете ключ (либо по сеансу, либо по cookie). Тогда у вас будет больше возможностей контролировать элементы в кэше, а также устанавливать зависимости от них. Таким образом, если рассматриваемый DataTable будет меняться на регулярной основе, то, вероятно, кеширование является подходящим вариантом. В противном случае, если это статический сеанс, может быть более подходящим. У Стивена Смита есть отличное видео о кешировании на dnrtv , которое стоит посмотреть.
Это действительно зависит от того, чего ты пытаешься достичь, сколько у тебя времени. Существуют и другие альтернативы, которые следует учитывать при хранении состояния в приложении.
В зависимости от размера таблицы, вы можете рассмотреть возможность сохранения состояния в куки (зашифрованном, если это конфиденциальная информация). В качестве альтернативы, если это данные области приложения, вы можете использовать статическое поле на странице или в классе. Также есть объект Application.
Обновление : Я думаю, что ключевой вопрос, который вы должны задать себе, - это кто должен видеть эти данные.
Are they going to access the data frequently?
(Нет, не беспокойтесь).
Is it going to change?
(Нет, используйте статическое поле или приложение).
Is it acceptable for user a and user b to see the same results?
(Нет, используйте кеш с ключом, состоящим из имени пользователя и условия поиска.).
(Да, используйте кеш, используя ключ поискового запроса).
Честно говоря, если вы не далеко продвинулись в своем развитии, я бы подумал перенести проблему кэширования / состояния на более позднюю дату - она может даже не понадобиться.
Первые три правила настройки производительности:
1. Измерьте, 2. Измерьте еще немного. 3. Измерьте снова ...