Посмотрите следующее для примера, который показывает объявление и потенциальное использование:
namespace Flags
{
class Program
{
[Flags]
public enum MyFlags : short
{
Foo = 0x1,
Bar = 0x2,
Baz = 0x4
}
static void Main(string[] args)
{
MyFlags fooBar = MyFlags.Foo | MyFlags.Bar;
if ((fooBar & MyFlags.Foo) == MyFlags.Foo)
{
Console.WriteLine("Item has Foo flag set");
}
}
}
}
Следует избегать использования AJAX, если та же функциональность может быть реализована полностью на стороне клиента без дополнительного обращения к серверу.
Например, может быть более эффективным заполнение клиента со списком почтовых индексов для всех штатов США и выбором почтовых индексов для соответствующего набора вместо перехода на сервер для получения списка действительных почтовых индексов для данного штата.
Это намного быстрее, чем хранение сеансов в базах данных, и позволяет вашим сеансам сохраняться на нескольких веб-узлах (если вы находитесь в ситуации с балансировкой нагрузки) ... это также немного повысит производительность вашего сайта, поскольку в этом нет необходимости попадать в файловую систему / базу данных для получения информации о сеансе по каждому запросу.... и многое другое;)
Что касается некоторых из ваших опасений по поводу объема памяти, занимаемого отдельными кэшируемыми элементами, у вас есть несколько вариантов. Моя первоначальная мысль состоит в том, чтобы просто покрутить его, посмотреть, насколько действительно большие эти элементы кеша (вы можете найти несколько вещей с открытым исходным кодом для мониторинга фактического использования кеша, например кактусы). Я думаю, они будут меньше, чем вы думаете.
Если это не так, я бы предложил переосмыслить вашу стратегию кеширования в отношении того, что вы на самом деле кешируете, как долго и т. Д. Возможно, вы могли бы создать канал из нескольких вещей, уже находящихся в кеше (например, кэшировать отдельные данные пользователя, а затем создать канал для человека из всех этих отдельных элементов в кеше). На эту тему есть много хороших статей, просто поищите их :)