Подсказки по производительности.NET для веб-приложений предприятия

Вы просто сможете использовать директиву Alias для псевдонима /served/ для рассматриваемой папки мультимедиа. Так, например:

Alias /served/ /home/example.com/public_html/media/

Это будет означать, что запрос к http://example.com/served/filename.jpg будет преобразован в /home/example.com/public_html/media/filename.jpg. Вы можете сделать то же самое для ресурсов в /static/.

(Обратите внимание, что в приведенном выше примере используется example.com, а не mydomain.com из-за ограничений SO .)

8
задан Handcraftsman 25 March 2013 в 17:25
поделиться

12 ответов

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

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

Таким образом, мои подсказки:

  • Напишите самый читаемый код, Вы можете
  • Не оптимизируйте реализацию преждевременно - но думайте об архитектурных проблемах производительности рано
  • Не вносите изменения от имени производительности, пока у Вас нет твердых чисел, чтобы позволить Вам сказать, улучшаете ли Вы вещи
  • Используйте профилировщика, чтобы помочь определить узкие места

Ни одно из этого не характерно для веб-приложений, до сих пор. Для веб-приложений (и серверная сторона в целом):

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

Править: Я не обратился к базе данных вообще. Ответ Kyle хорош на той передней стороне. Удостоверьтесь, что Ваша база данных может масштабироваться также, если это возможно, :)

24
ответ дан 5 December 2019 в 04:34
поделиться

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

Кодирование...

  • Вы выбираете дюжину столбцов, когда Вам только нужно 2?
  • Вы захватываете все результаты для выполнения СУММЫ?
  • Вы захватываете 1 000 записей для отображения 10?
  • Вы исчерпываете сто запросов каждая страница?

База данных...

  • У Вас есть индексы на Ваших таблицах?
  • Действительно ли они - правильные индексы?
  • Вы захватили некоторые демонстрационные запросы с помощью SQL Profiler и проверили их планы выполнения в Анализаторе Запроса?
  • Вы видящий СКАНИРОВАНИЕ ТАБЛИЦЫ - ПЛОХО!
  • Вы видящий, что ИНДЕКС ИЩЕТ - ХОРОШИЙ!

И если все остальное перестало работать, кэшируйте дерьмо из него и бросьте больше аппаратных средств в проблему!:)

15
ответ дан 5 December 2019 в 04:34
поделиться

Мы имеем дело с этим каждый день.

Мы ДЕЙСТВИТЕЛЬНО кэшируем некоторые наборы данных, которые используются МНОГО. У нас есть довольно сложный механизм кэширования слоя данных, который работает хорошо на нас.

Отложенные вычисления для примерно всего.

Страница - и частичное кэширование для пользовательских элементов управления

Мы не используем состояние сеанса вообще, таким образом, мы отключили его в целом.

Настройте веб-сайты для выполнения как известное - низкий-prived пользователь.

Соединитесь с SQL Server как тот же низкий-prived пользователь. Это помогает с организацией пула подключений - все соединения являются по существу тем же.

НИКАКОЙ специальный SQL. Сохраненный procs ТОЛЬКО. Помогает с производительным И Внедрением SQL.

строка. Concat () вместо строки + представляют в виде строки +... или StringBuilder

3
ответ дан 5 December 2019 в 04:34
поделиться

За исключением manwood никто не упомянул ViewState, и это довольно удивительно. Я проголосовал бы за управление состоянием отображения как за единственные наиболее важные факторы для производительности improvment.

Мой список:

  1. Управляйте Состоянием отображения настойчиво
  2. UpdatePanel является злым ;) Сделайте использование Juridicious
  3. Усильте платформы JavaScript, такие как jQuery
  4. Следите за своими распространениями в прямом и обратном направлениях сервера
  5. Используйте страницы Async для связанных операций IO
  6. Кэширование на различном уровне одинаково важно (Уровень страницы, данные и т.д.)
  7. Используя Ajax для выборки данных "по требованию" и кэша локально как XML (острова данных XML и т.д.)
  8. Рассмотрите асинхронную обработку для длительных операций (можно или использовать основанные на базе данных очереди заданий и обрабатывать их через сервис окон. Запрос ajax мог контролировать строку для завершения и обновить UI с помощью воздушных шаров),

Править: [добавленный 6-8]

3
ответ дан 5 December 2019 в 04:34
поделиться

Microsoft опубликовала книгу под названием Улучшение Производительности приложения.NET и Масштабируемости. Это - необходимость книга чтения.

2
ответ дан 5 December 2019 в 04:34
поделиться
  • база данных доступа как можно меньше
  • доступ web.config как можно меньше
  • как manwood говорит, хорошо используют кэш. Я мог также предложить прочитать эту очень хорошую статью о кэшировании привилегированного режима
  • постарайтесь не блокировать, если Вы можете
  • некоторыми вещами (как сортировка данных) может быть сделанная сторона клиента в наше время (см. JQuery),
  • вот хорошая статья для чтения
1
ответ дан 5 December 2019 в 04:34
поделиться

Кроме базы данных другой очень imporant вещь смотреть...

размер страницы и количество запросов. Это должно обойтись без помощи высказывания, но ASP.NET известно плох при заполнении Ваших страниц с набором загаженного производства (подвозящий размер) и создающий миллион внешних файлов сценария (количество запросов).

1
ответ дан 5 December 2019 в 04:34
поделиться
  • Отправьте назад максимально редко. Use DHTML & JavaScript для управления страницей, когда пользователи делают сложный набор critera выбора. Не отправляйте назад для внесения изменений в странице в ответ на каждого маленького пользователя, устанавливающего.
  • Средства управления ASP.NET использования экономно как возможные. Используйте простой HTML как можно больше. Все средства управления ASP.NET происходят в стоимость из-за состояния отображения и управляют состоянием. Плоскость HTML не имеет этих издержек. Я однажды сделал веб-приложение для Ситибанка, который состоял из одной основной страницы запроса. Эта страница была умеренно сложна. Это имело только один контроль ASP.NET на нем. Это была кнопка, которая отправила назад для производства пользовательского листа Excel, загруженный пользователем выбрал данные.
  • Используйте платформу MVC, а не ASP.NET. Состояние отображения и состояние управления вне изображения здесь при использовании Гитова или NVelocity.
  • Выполненный профилировщик Муравьев программным обеспечением Redgate на Вашем коде бэкенда. Удостоверьтесь, что Ваше событие возврата максимально коротко и сладко.
  • Если страница получает данные из таблицы, которая обновляется один раз в 24 часа или однажды в неделю, не пишите общую страницу ASP.NET для запросов данных каждый раз, когда пользователь выполняет запрос. Если данные статичны, сделайте страницу статичной также. Можно генерировать статические страницы на основе Планировщика NT с помощью литералов XML и Linq к классам XML. Это - самая большая скорость, я могу дать Вам.
1
ответ дан 5 December 2019 в 04:34
поделиться
  • Хорошо используйте объект Кэша для любых данных, которые не изменяются очень часто, но привыкают много. Если необходимо сохранить объекты кэша в соответствии с базой данных, взглянуть на SqlCacheDependency.
  • Отключите ViewState везде, где он не требуется
0
ответ дан 5 December 2019 в 04:34
поделиться

исследуйте журнал и минимизируйте сумму HTML, подаваемого на запрос. состояние отображения и чрезмерно увеличенные в размере сторонние средства управления могут разрушить Ваше приложение. Например, мы использовали в течение долгого времени сетку от очень очень способного infragistics., но даже в ее разделенной форме она сделала страницы о 60-90k + много сценария Java. это сильно ограничило количество запросов, мы могли сервер, даже на внутреннем гигабитном соединении.

0
ответ дан 5 December 2019 в 04:34
поделиться

По моему опыту, следующее имейте большое значение:

  • Используйте SQL Server Profiler для идентификации медленных рабочих запросов. В особенности используйте настраивающийся шаблон, чтобы видеть, пропустили ли Вы какие-либо индексы.
  • Кэшируйтесь разумно (Блок программы кэширования)
  • Следите за ViewState
  • Используйте Скрипача для проверки размера страницы и т.д.
0
ответ дан 5 December 2019 в 04:34
поделиться

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

Масштабируемые приложения с асинхронным программированием в ASP.NET

0
ответ дан 5 December 2019 в 04:34
поделиться