网站优化/减少asp.net mvc 3中的加载时间

时间:2011-12-13 21:46:11

标签: performance asp.net-mvc-3 optimization stack-trace

我已经使用nopCommerce开源构建了一个测试网站,一切正常,我需要知道,为什么我的网站加载时间大于6秒,主页工作正常,但点击时的类别需要6-10秒。如何检查http请求并调用db,以便我可以跟踪哪个函数需要很长时间。

测试网站是test website 谢谢

4 个答案:

答案 0 :(得分:5)

我会按顺序尝试的事情:

  • MvcMiniProfiler
  • 使用.NET Profiler分析我的代码是否存在可能的性能瓶颈。
  • 如果先前的方法没有产生任何有效的问题,那么最终会向nopCommerce支持提交错误。

在此期间,我可能还会与我的托管服务提供商签出他是否不是导致缓慢的原因。

答案 1 :(得分:1)

作为一项快速而肮脏的检查,您可以将生成响应所需的时间添加为IIS日志中的列 - 这将使您了解服务器是否在为页面提供服务的速度很慢或者您需要做一些前端优化工作。

在前端,您需要做的第一件事就是将主题的所有CSS文件合并为一个以保存往返 - 浏览器无法呈现页面,直到获得CSS

你头脑中的所有.js文件也会阻止页面,你能合并它们并在以后加载它们吗?

imagegen.ashx的性能看起来很慢 - 你需要动态生成横幅还是可以预先生成?

如果生成页面的后端方面很慢,那么Web上会有一些脚本显示哪些查询使用的CPU最多,从而产生最多的IO操作等。

答案 2 :(得分:1)

以下列出了您可以改进的事项,

1.组合你的js。

您可以使用一些内容,例如jsMin,您可以阅读[post] http://encosia.com/automatically-minify-and-combine-javascript-in-visual-studio/。但是,jsmin似乎没有压缩组合的js。

另一种选择是[jmerge] http://demo.lateralcode.com/jmerge/事实上,它确实是这样的,因为它只需要一个http链接就可以让网站准备好与jmerge合并。

迄今为止我所知道的最好的一个是MVC4的捆绑和缩小功能。它是MVC4的一部分,但是,你可以为你的MVC 3应用程序获得一个Nuget包。

建议:捆绑你的每一个j不一定是个好主意,它甚至可以解决一些问题,因为你最终会得到一个浏览器必须顺序下载的大js,而不是下载几个较小的js。 (你可能想看看head.js让js下载并行)所以这里的诀窍是保持平衡。我最终得到了谷歌CDN的jquery,并将其余的js捆绑成一个。

2.Put js位于页面底部,因此浏览器在开始呈现页面之前不必先加载js。但是你需要小心这个,因为通常你会有jquery函数在document.ready()的页面标题上做东西,我建议你把它移到页面的底部,如果可能的话。

如果将布局页面中的js reference和scirpt块移动到底部,那么您很可能会在单个视图中遇到嵌套js引用和js脚本块的问题。不用担心,那么您需要在视图中使用@section(可能适合在其他线程中进行讨论)并在布局页面中进行渲染,以便视图中的引用和脚本块在底部呈现运行时的页面。

2.使用CDN 很直接。

3.Combine CSS 使用用于组合js的相同工具将它们组合成一个,但是您需要在页眉而不是底部引用它。

4.启用静态内容缓存,类似于Web配置文件中的内容                                    

第一次加载无效,但肯定会让返回用户的速度快得多。

5.启用网址压缩              
    

  1. 首次加载的时间 这是webpagetest.org使用的指标之一。但是,请不要过分反对这个问题,因为它基本上说明了您的Web服务器可以为内容提供多快的速度。因此,你可以在这里形成软件结束。
  2. 希望这会有所帮助!

答案 3 :(得分:0)

NopCommerce的速度非常慢,开发人员并没有认真考虑性能问题。我看到许多与性能相关的论坛没有得到答复。祝你好运。