Оптимизация сайта / сокращение времени загрузки в asp.net mvc 3 - PullRequest
3 голосов
/ 14 декабря 2011

Я создал тестовый веб-сайт с открытым исходным кодом nopCommerce. Все работает нормально, мне нужно знать, почему время загрузки моего веб-сайта превышает 6 секунд, домашняя страница работает нормально, но категории при нажатии занимают 6-10 секунд.,Как я могу проверить HTTP-запрос и вызовы в БД, чтобы я мог отслеживать, какая функция занимает много времени.

Тестовый сайт Тестовый сайт Спасибо

Ответы [ 4 ]

5 голосов
/ 14 декабря 2011

Вещи, которые я бы попробовал в таком порядке:

  • MvcMiniProfiler .
  • Проанализируйте мой код на предмет возможных узких мест производительности с помощью профилировщика .NET.
  • Наконец, отправляйте сообщения об ошибках в службу поддержки nopCommerce, если предыдущие подходы не приносили ничего полезного, что могло бы привести к тому, что мой код стал причиной.

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

1 голос
/ 20 мая 2012

Ниже приведен список вещей, которые вы можете улучшить,

1. Комбинируйте свой JS.

Есть несколько вещей, которые вы можете использовать, например, jsMin, вы можете прочитать это [post] http://encosia.com/automatically-minify-and-combine-javascript-in-visual-studio/. Однако jsmin, похоже, не сжимает объединенные js.

Другой вариант - [jmerge] http://demo.lateralcode.com/jmerge/ Он делает это после факта, в том смысле, что вам нужно подготовить сайт к объединению их с jmerge, поскольку он принимает только ссылку http.

Лучшим из известных мне на данный момент является функция связывания и минификации MVC4. Это часть MVC4, однако вы можете получить пакет Nuget для вашего приложения MVC 3.

Совет: сборка каждого вашего js не обязательно является хорошей идеей, это даже может иметь неприятные последствия, поскольку в результате вы получите большие js, которые браузер должен будет загружать последовательно, а не несколько меньших. (возможно, вы захотите заглянуть в head.js для параллельной загрузки js). Итак, хитрость в том, чтобы сохранить баланс. В итоге я получил jquery от Google CDN и соединил остальные мои js в один.

2. Поместите js внизу страницы, чтобы браузеру не нужно было сначала загружать js, прежде чем он начнет отображать страницу. Но вы должны быть осторожны с этим, поскольку, как правило, у вас будут функции jquery, выполняющие какие-либо операции над document.ready () в верхнем колонтитуле страницы, я советую вам переместить это также в нижнюю часть страницы, если это возможно.

Если вы переместите блок js reference и scirpt на странице макета вниз, вы, скорее всего, столкнетесь с проблемой вложенных блоков js reference и js script в вашем отдельном представлении. Не беспокойтесь, тогда вам нужно изучить использование @section (возможно, подходящего для обсуждения в другом потоке) в вашем представлении и отобразить его на странице макета, чтобы ссылочный блок и блок сценария внутри вашего представления были визуализированы в нижней части страница во время выполнения.

2.Использование CDN Довольно прямо вперед.

3.Combine CSS Объедините их в один, используя тот же инструмент, который вы используете для объединения js, но вам нужно ссылаться на него в заголовке страницы, а не внизу.

4.Включить статический кеш контента, что-то вроде этого в вашем файле веб-конфигурации

Это не поможет с первой загрузкой, но определенно сделает это намного быстрее для возвращающегося пользователя.

5. Включаемое сжатие URL

  1. Время первой загрузки Это одна из метрик, используемых webpagetest.org. Но не стоит слишком сильно биться об этом, так как в основном говорится, как быстро ваш веб-сервер может обслуживать контент. Так что, вероятно, вы мало что можете сделать здесь с конца программного обеспечения.

Надеюсь, это поможет!

1 голос
/ 15 декабря 2011

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

Что касается внешнего интерфейса, первое, что вам нужно сделать, - это объединить все CSS-файлы для темы в один, чтобы сэкономить при загрузке - браузер не может отобразить страницу, пока не получит CSS

Все файлы .js, которые у вас есть в голове, также блокируют страницу. Можете ли вы объединить их и загрузить позже?

Производительность imagegen.ashx выглядит медленной - нужно ли вам создавать баннеры на лету или они могут быть предварительно сгенерированы?

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

0 голосов
/ 15 февраля 2012

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

...