Но это заставило меня задуматься о том, какова максимальная длина ключа кеша. Есть ли максимальная длина ключа? Попытка сохранить вещи таким способом может привести к некоторым довольно длинным значениям имени ключа, и это на самом деле ничего не делает с сохранением самых распространенных поисков, а также последних использованных.
Длина ключа - это максимальная длина самой «строки».
Согласно документации здесь: http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx, ключ может быть определен в строке со значением в типе объекта.
Я бы предложил пометить пользовательский объект уникальным ключом, чтобы при запросе из кэша можно было возражать против пользовательского объекта с более сложной информацией, помеченной в пользовательском объекте.
РЕДАКТИРОВАТЬ 11072009_1154
После того, как я снова внимательно прочитал ваше требование, я заметил, что ваша цель - кэшировать часто встречающуюся строку поиска.
В данном примере часто используемой строкой поиска может быть «Microsoft Visual Studio 2008 с пакетом обновления 1». На мой взгляд, это должен быть ключ, в то время как значение - это пользовательский объект, который будет иметь дополнительные свойства для хранения других ваших необходимых атрибутов.
В целом, это может быть пример:
Ключ: «Microsoft Visual Studio 2008 с пакетом обновления 1»
Значение: CustomObjectInstance, где: CustomObjectInstance.UserLanguage = "английский" и CustomObjectInstance.UserLocalization: "США", CustomObjectInstance.UserKeyboardLayout = "Великобритания" и т. Д.
AFAIK, Cache реализует словарный тип структуры данных, поэтому ключ должен быть достаточно уникальным. Итак, если ваш ключ «Microsoft Visual Studio 2008 с пакетом обновления 1 (SP1) - группа пользователей 2, 3, 6, 17, 89») Как вы можете уникальным образом идентифицировать этот конкретный ключ в своих веб-приложениях ASp.NET? Потому что в моем текстовом поле поиска я не буду вставлять usergroup2,3,6,17,89
Подумайте также о функциональности поиска по сайту в StackOverflow: пользователи будут вставлять общую строку поиска, т. Е. «Изучить материал jquery», тогда, на мой взгляд, в ключе вашего кэша должна быть запись «материал изучения jquery».
РЕДАКТИРОВАТЬ 11072009_1250
Спасибо за дополнительную информацию. Я также могу дать дополнительное решение, применяя несколько слоев, что я имею в виду, вместо того, чтобы помещать всю информацию в один слой кеша, почему бы не сохранить дополнительный слой.
Означает, что ваш кеш будет иметь ключ (строку) и значение, которые снова указывают на словарь.
Другое возможное решение - использовать эту функцию с помощью полнотекстового поиска по SQL Server. Я не совсем знаком с полнотекстовым поиском по SQL Server, но было бы неплохо, если бы мы могли использовать эту функцию в существующей инфраструктуре, если возможно.