Оптимизация ViewState

С SQL Server или MySQL, если существует PK с автоматическим инкрементом, усеченным, сбросит счетчик.

8
задан AnthonyWJones 7 December 2009 в 18:42
поделиться

2 ответа

There's not a lot I can tell you except "don't put a lot into your ViewState".

Places I'd look for optimizations:

  • Anything you added to ViewState yourself
  • Large amounts of data bound to data display controls like GridViews, Lists, and Repeaters.

GridViews are particularly bad about ViewState; everything you databind goes into it, so if you bind a particularly large list expecting ASP.NET to handle pagination of it for you, you're going to have a huge ViewState. The only way to get around this is to only bind one page at a time to the GridView, but that means you'll have to do data-side pagination which can be just as painful, or to turn off ViewState for the GridView, which means (arguably) useful features like in-line editing are no longer available.

There's no silver bullet here.

6
ответ дан 5 December 2019 в 10:42
поделиться

Вот несколько идей, как можно оптимизировать размер ViewState передается по сети ( скопировано из этого ответа ):

  • Отключить ViewState для элементов управления, которым он не нужен (это наиболее эффективное решение). Например если вы можете кэшировать некоторые данные на сервере, вы можете повторно привязать любые элементы управления привязкой к данным с каждым запросом, и нет необходимости сохранять все в ViewState.
  • Включите HTTP-сжатие на сервере (IIS) . Это уменьшает размер страницы, отправляемой клиенту, включая ViewState.
  • Сжимает ViewState . Это имеет дополнительное преимущество перед сжатием HTTP: это также уменьшает размер PostBack (данные, отправляемые обратно на сервер), поскольку ViewState всегда отправляется обратно на сервер во время PostBack. Для этого существуют различные подходы, например, как показано в этой записи в блоге .
  • Сохраните ViewState на сервере вместо того, чтобы отправлять его в скрытом поле со страницей. Самый простой способ сделать это - использовать SesionPageStatePersister , но есть и другие решения, которые сохраняют ViewState на диск вместо использования сеанса ( см. здесь, например, ).
9
ответ дан 5 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: