1: получить время. Пока вы не знаете, где замедление, вопрос слишком широк, чтобы ответить. Проект, над которым я работаю, имеет именно эту проблему; Там нет регистрации, чтобы даже знать, как долго определенные вещи; мы можем только догадываться о медленных частях приложения, пока не добавим время в проект.
2: Если у вас есть последовательные операции, не бойтесь слегка многопоточности. ОСОБЕННО, если задействованы блокирующие операции. PLINQ твой друг здесь.
3: Создайте свои представления MVC при публикации ... Это поможет с некоторыми "попаданиями на первую страницу"
4: Некоторые утверждают, что хранимая процедура / преимущества ADO скорости. Другие приводят доводы в пользу скорости развития EF и более четкого разделения ярусов и их назначения. Я видел очень медленные разработки, когда SQL и обходные пути использования Sprocs / Views для извлечения и хранения данных. Кроме того, ваша сложность тестирования возрастает. Наша текущая кодовая база, которую мы конвертируем из ADO в EF, работает не хуже (а в некоторых случаях лучше), чем старая модель Hand-Rolled.
5: Тем не менее, подумайте о прогреве приложения. Часть того, что мы делаем, чтобы помочь устранить большинство наших проблем производительности EF, заключалась в добавлении специального метода прогрева. Он не прекомпилирует какие-либо запросы или что-либо еще, но помогает в большей части загрузки / генерации метаданных. Это может быть еще более важно при работе с моделями Code First.
6: Как уже говорили другие, не используйте состояние сеанса или ViewState, если это возможно. Они не обязательно являются оптимизацией производительности, о которой думают разработчики, но как только вы начнете писать более сложные веб-приложения, вы захотите быстро реагировать. Состояние сеанса исключает это. Представьте себе длинный запрос. Вы решаете открыть новое окно и попробовать менее сложное. Что ж, возможно, вы также ждали с включенным состоянием сеанса, потому что сервер будет ждать до завершения первого запроса, прежде чем перейти к следующему для этого сеанса.
7: свести к минимуму поездки в базу данных. Сохраняйте материалы, которые вы часто используете, но реально не измените их в свой .Net Cache. Попытайтесь пакетировать ваши вставки / обновления, где это возможно.
7.1. Избегайте кода доступа к данным в представлениях Razor без чертовски веских причин. Я бы не сказал этого, если бы не видел это. Они уже обращались к своим данным, когда собирали модель, почему, черт возьми, они не включили ее в модель?