Передний и задний приемы для повышения производительности - PullRequest
1 голос
/ 01 апреля 2011

Каковы некоторые из общих и заметных проблем производительности / узких мест, которые обычно встречаются в веб-приложении как на переднем, так и на заднем уровнях?

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

Каковы общие правила, которые помогают ориентироваться в таких вопросах? А какие хорошие дела?

Спасибо, Alex

Ответы [ 5 ]

3 голосов
/ 01 апреля 2011

На внешнем интерфейсе:

- перенесите все свои активы - файлы CSS, изображения, статический контент - в CDN.Edgecast довольно хорош и по разумной цене.

- не используйте загрузку целых фреймворков javascript, когда вам нужно всего лишь несколько функций из него.загружать только то, что нужно.

На сервере

- кэшировать результаты всех вызовов базы данных, используя хэш запроса SQL в качестве имени ключа и набор результатов в качестве значения

- убедитесь, что вы не делаете таблицы базы данных действительно «широкими» - тонны столбцов и таких типов столбцов, как «текст» и «блоб»

3 голосов
/ 01 апреля 2011

Для интерфейса есть хорошо известные рекомендации / правила , которым вы можете следовать, и есть несколько замечательных инструментов, таких как YSlow , которые могут помочь вам определить узкие места.1005 *

Для серверной части, как вы заметили, эффективное использование индексов является обязательным.Другие оптимизации обычно включают в себя кэширование и такие базовые вещи, как избегание выполнения операций внутри циклов, которые можно выполнить один раз.Я уверен, что у людей здесь будут предложения, но помните, что «преждевременная оптимизация - корень всего зла!»: -)

2 голосов
/ 05 апреля 2011

Используйте архитектуру на основе CQRS.CQRS расшифровывается как отделение ответственности команд / запросов;это в основном означает, что у вас есть другой код (сервисы) для чтения из БД и записи в БД.Хорошей практикой для масштабируемости является наличие отдельных БД для чтения и записи (это действительно имеет смысл, если вы читаете больше о CQRS), и вы можете масштабировать базу данных чтения, имея копии, запущенные на нескольких серверах.

CQRS интересен не только с точки зрения масштабируемости, но и с точки зрения поддержки кода и ясности.Однако для того, чтобы узнать о CQRS и понять его, требуется некоторое усилие.

Проверьте эти ссылки:

http://www.slideshare.net/skillsmatter/ddd-exchange-2010-udi-dahan-on-architectural-innovation-cqrs

http://www.slideshare.net/pjvdsande/rethink-your-architecture-with-cqrs

2 голосов
/ 01 апреля 2011

Millhouse на это.Я также могу добавить:

  • Пакетные дорогие операции вверх.Например: не делайте много отдельных вызовов в базу данных, если вы можете сделать все это одним нажатием.
  • Избегайте серверных прыжков, где можете.не так часто для вашего «среднего» веб-приложения, но вполне возможно в более крупных приложениях масштаба предприятия.)
  • Предварительная обработка: обработка данных, предварительная подготовка контента и т. д.
1 голос
/ 23 января 2013

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

...