Хранение экземпляра списка 1000+ моего пользовательского класса в сеансе является проблемой памяти? - PullRequest
1 голос
/ 04 октября 2010

Хороший ли подход - сохранение списка 1000 экземпляров моего пользовательского класса в переменной сеанса? Моему веб-приложению asp.net требуется многоязычная поддержка, и я храню метки в таблице. У меня будет несколько пользователей, которые имеют свои собственные языковые и текстовые предпочтения (содержимое меток).

Я думаю о загрузке меток и сохранении их в переменной сеанса и доступе к ним для использования на страницах. Разделение его в переменной приложения не работает, потому что у каждого клиента есть свой собственный текст для меток. способ сделать это? Я предполагаю, что у меня будет почти 1000 ярлыков на данный момент, и это может увеличиться с ростом приложения.

В моем пользовательском классе 2 человека. LanguageCode и LanguageName

по какой-то причине я не могу использовать файлы ресурсов asp.net: (

Что вы думаете об этом?

Ответы [ 5 ]

2 голосов
/ 04 октября 2010

Некоторые мысли, чтобы заметить:

Если ваши менеджеры имеют что-то особенное против resx, вы можете хранить все эти метки в любом другом формате (например, в текстовых файлах) или в БД.

Если у вас мало пользователей, а время загрузки крайне важно, у ваших менеджеров может быть смысл. Кроме этого, они не правы, и я хотел бы попытаться объяснить им это.

Попробуйте продумать «вычисление» меток во время выполнения (например, если некоторые из них включают добавление префиксов, суффиксов и т. Д., Вы можете сохранить только «основы» и предоставить соответствующую метку только по требованию. Это сэкономит вам немного места на сервере). ).

2 голосов
/ 04 октября 2010

Вы должны сохранить один набор меток для каждого языка, затем сохранить имя языка в сеансе и использовать его для поиска правильного набора меток.

1 голос
/ 04 октября 2010

Почему бы не использовать переменную приложения и создать столько переменных приложения, сколько языков у вас есть.Каждая переменная приложения будет надмножеством всех меток для этого языка.Или, может быть, хранить всю таблицу (таблицы) в прикладной переменной (ях) вместо хранения нескольких переменных сеанса, которые, как я предполагаю, они пересекаются друг с другом.

1 голос
/ 04 октября 2010

Не очень хорошая идея, есть две проблемы:

  • Это израсходует память на сервере и уменьшит количество пользователей, которые могут использовать систему
  • Время для каждого запроса будет увеличиваться

Стандартный способ сделать это - использовать файлы RESX (ресурсы). Вы должны попытаться это исправить.

1 голос
/ 04 октября 2010

На вашем месте я бы сначала потратил некоторое время, пытаясь выяснить, почему ваши файлы ресурсов не работают ... пока вы устанавливаете значение Thread.CurrentThread.CurrentCulture (или это CurrentUICulture?) В значение специфическая культура и наличие файлов ресурсов в правильном месте, я не могу придумать никаких причин, почему это не сработает.

...