Перемещение ViewState со страницы? - PullRequest
10 голосов
/ 07 сентября 2008

Мы стараемся максимально облегчить загрузку нашей страницы. Поскольку ViewState иногда может увеличивать размер страницы до 100 КБ, я бы хотел полностью ее устранить.

Мне бы очень хотелось услышать о некоторых приемах, которые другие люди использовали для перехода ViewState к пользовательскому провайдеру.

Тем не менее, несколько предостережений:

  • Мы обслуживаем в среднем 2 миллиона уникальных посетителей в час.
  • Из-за этого чтение базы данных является серьезной проблемой в производительности, поэтому я не хочу хранить ViewState в базе данных.
  • Мы также поддерживаем балансировщик нагрузки, поэтому любое решение должно работать с тем, чтобы пользователь отскакивал от машины к машине при обратной передаче.

Идеи

Ответы [ 15 ]

0 голосов
/ 17 сентября 2008

Рассматривали ли вы действительно нужно все это состояние просмотра? Например, если вы заполняете сетку данных из базы данных, все данные будут сохранены в состоянии просмотра по умолчанию. Однако, если сетка предназначена только для представления данных, вам не нужна форма all, и, следовательно, нет состояния просмотра.

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

У вас есть особый пользовательский интерфейс, если вам на самом деле нужно 100K просмотра состояния. Если вы уменьшите состояние представления до того, что абсолютно необходимо, может оказаться самым простым и масштабируемым сохранить состояние просмотра на странице.

0 голосов
/ 07 сентября 2008

О, нет, красная лента . Ну, это будет непростой заказ. Вы упомянули здесь , что вы используете сервер состояний для обслуживания своего состояния сеанса. Как у вас есть эта настройка? Может быть, вы можете сделать что-то подобное и здесь?

Редактировать

Awh @Jonathan, вы опубликовали , пока я печатал этот ответ. Я думаю, что идти по этому пути может быть многообещающим. Во-первых, это определенно будет интенсивно использовать память.

@ Mike Не думаю, что сохранение этой информации в информации о сеансе будет хорошей идеей из-за большого объема памяти состояния просмотра, а также того, сколько раз вам потребуется доступ к состоянию просмотра. SessionState доступен намного реже, чем viewstate. Я бы оставил их отдельно.

Я думаю, что окончательным решением было бы сохранить ViewState на клиенте, как и, возможно, стоит посмотреть. С Google Gears это стало бы возможным сейчас.

0 голосов
/ 07 сентября 2008

Я посмотрю, смогу ли я найти способ использовать наш текущий сервер состояний для хранения состояния просмотра в памяти, и я должен иметь возможность использовать идентификатор сеанса пользователя для синхронизации данных между компьютерами.

Если я найду хорошее решение, я удалю любой код, защищенный IP, и выложу его для публичного использования.

0 голосов
/ 07 сентября 2008

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

Я понимаю, как трудно продавать аппаратные решения высшему руководству, но всегда полезно, чтобы руководство хотя бы согласилось прислушиваться к представителю отдела продаж оборудования. Я скорее предпочитаю использовать какое-то оборудование, которое предоставит мне немедленное решение, потому что оно позволяет мне (или выигрывает у меня время) выполнять какую-то другую реальную работу.

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

Дайте мне знать, если вы найдете другое программное решение.

0 голосов
/ 07 сентября 2008

Из-за типичного организационного раздувания запрос нового оборудования занимает много времени, а запрос оборудования, который потребовал бы полной перенастройки нашей текущей настройки, вероятно, получил бы серьезное сопротивление со стороны инженерного отдела.

Мне действительно нужно придумать программное решение, потому что это единственный мир, которым я могу управлять.

Yay для предприятия: (

...