2011-12-13 4 views
3

Я создал тестовый веб-сайт с открытым исходным кодом nopCommerce, все работает отлично, мне нужно знать, почему время загрузки моего сайта больше 6 секунд, работает домашняя страница отлично, но категории при нажатии на них занимают 6-10 секунд. как я могу проверить HTTP-запрос и вызовы на db, чтобы я мог отслеживать, какая функция занимает много времени.Оптимизация сайта/уменьшение времени загрузки в asp.net mvc 3

Test сайт test website Благодаря

+1

Как отметил Дарин, самая большая проблема на сервере, конечно. Тем не менее, интерфейс также показывает некоторое пространство для улучшения времени загрузки. Например, сжатие, кеширование, объединение изображений в спрайты и объединение и минимизация css и js помогут. См. Https://developers.google.com/pagespeed/#url=http_3A_2F_2Fwww.teamlemon.co.uk_2Fc_2F7_2Frapid-assayspoc&mobile=false – mnemosyn

ответ

5

Что я хотел бы попробовать в таком порядке:

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

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

+0

есть какой-либо бесплатный профилировщик .net –

+0

@MrA, да, есть CLR Profiler от Microsoft: http: //msdn.microsoft.com/en-us/library/ff650691.aspx –

+0

подробнее об оценке производительности сайта электронной торговли [this] (http://www.quora.com/How-are-the-page-load- times-of-FlipKart-Myntra-and-Amazon-so-low-несмотря на то, что многие изображения слишком больших размеров на сайтах? srid = hyI3 & share = 1) и [this] (http : //www.quora.com/What-can-I-do-to-make-my-asp-net-shopping-website-as-fast-as-Flipkart-Myntra-and-Amazon-with-hundreds-of -images-in-the-page), надеюсь, кому-то поможет. – stom

1

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

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

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

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

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

0

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

+1

Может быть, вы можете посмотреть этот плагин производительности для nopcommerce здесь для справки: http://www.nopaccelerate.com/ – Herin

+0

спасибо, я уже использую это. Это помогло нам устранить все наши проблемы с быстротой и масштабируемостью. Благодарим вас за рекомендацию. – Krunal

1

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

1.Combine ваши JS.

Есть несколько вещей, которые вы можете использовать, например, jsMin, вы можете прочитать это [сообщение] 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 и блок scirpt на вашей странице макета внизу, то скорее всего вы столкнетесь с проблемой вложенных ссылок js и блоков сценариев js в вашем индивидуальном представлении. Не беспокойтесь, тогда вам нужно взглянуть на использование @section (возможно, подходящее для обсуждения в другом потоке) в своем представлении и отобразить его на вашей странице макета, чтобы ссылочный и скриптовый блок внутри вашего представления отображались внизу страницу во время выполнения.

2.Use CDN Довольно прямо.

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

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

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

5.Enable сжатия URL

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

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

Смежные вопросы