2010-11-09 165 views
5

我差不多这个网上图书馆做:http://gramma.ro网站速度改进的建议?

我在YSlow的C级,但我还是不满意消耗这个 网站要加载的平均时间(约7秒钟,我的互联网连接) 。

也许有些人会说,它工作得很好,但请的这一个速度比较:http://www.libris.ro/这是绝对快。

你有我的应用程序有什么建议?你看到我可以改进的关键地方,这可以严重减少我的网站的加载时间?

数据库使用:SQL服务器2008

中使用的语言:C#+ asp.net

硬件使用:专用服务器,AMD 64 2.2千兆赫,2 GB RAM

在此先感谢...

UPDATE:I'我使用OutputCache(1小时或1天)选项来控制我的页面上的4个用户控件,从而改善了网站的加载速度3秒!

+0

YSlow说什么?为什么不从改进这些开始? – Martin 2010-11-09 20:45:09

+0

因为我从F级到C级,并没有像我预期的那样提高速度...... – 2010-11-09 20:46:59

+0

你在ASP.Net端做过任何测试吗?这可能是导致大部分延迟的原因 – 2010-11-09 20:51:39

回答

2

简单的答案就是升级硬件。不过,我认为可能有一些简单的改进点。

内存使用情况如何?你是否缓存了正确的东西(类似NHibernate SessionFactory的东西不应该在每个请求中被新增)。

也许你可以使用代码分析器分析您的web应用。我已经成功地使用了JetBrains的DotTrace,它有一个试用版afaik。您只需选择应用程序配置文件,运行一些请求并检查输出的哪些方法花费太多时间。然后,您可以深入研究这些方法,以查看哪一段代码确切地需要很长时间。

衡量代码的性能很重要,因为你(通常)不能独自一人去感受。

哦,你可能已经知道一件事:它不是一个文件大小的问题,这意味着它也不是一个大的视图状态问题。

+0

+1用于衡量性能。 – Geoff 2010-11-09 20:56:09

+0

极其有用的DotTrace.Ive刚开始测量性能和发现查询500〜700 ms正在加载...谢谢! – 2010-11-09 21:52:06

+0

@Cristian:请注意,DotTrace不是永久免费的,您需要许可才能在试用后继续使用它 – 2010-11-09 23:12:54

1

这取决于很多事情:

  1. 往返数据库服务器
  2. 编译代码或不
  3. 大的ViewState导致巨大的下载文件
  4. 大量的图片必须是下载

所以很难讲不知道你的应用程序的一些具体细节

建议:

  1. 创建静态资源,如图片,js和css文件
  2. 编译应用程序静态主机头(发布)
  3. 优化图像用于网络
  4. 使用缓存
+0

来自意见建议:2.不幸的是,我使用web dev express,它没有发布工具.... :( – 2010-11-09 20:52:35

0
  1. 而不是在标题中的样式标记中有你的css,将其拉出到外部的css文件。

  2. 将任何内联样式拉出到css文件,也就是顶部具有英里长样式属性的div标签。

加载这么长时间的原因是您试图在一个页面上推送太多文本。如果您将其提取到外部文件,它会在下次缓存它,并使您的初始页面加载速度更快。

+1

说实话,页面大小真的不是当然不足以保证7s的页面加载量 – 2010-11-09 20:54:11

+0

从源头上看,内容的数量不应该成为问题,他应该先看看他的服务器和/或代码。 – 2010-11-09 21:24:42

1

关闭我的头顶(并且没有看到您的代码): 我假设您正在从数据库构建您的列表 - 该SQL看起来像什么?你有没有优化查询/查询?表索引是否设置正确?此外,在适当的情况下,只要简单地使用with (nolock)就可以产生巨大的差异。

该网站需要一段时间才能为我初次加载,所以我假设减速是在您的数据检索。

0

缓存昂贵的数据库请求,减少图片的大小,如果可能的话,从CDN加载JavaScript的图书馆的

1

工具只能提供有关客户端问题的建议。

从Firebug的时间线看来,您的问题主要出现在服务器端。如果不知道服务器的规格(它可能负载太重),我不得不假设你的代码太慢了。

使用分析工具来找出你的代码的哪些部分需要这么长时间,并找到优化它的方法。通常你会发现应用了80/20规则,即大部分运行时间仅由一小部分代码占用。这意味着重大问题通常很容易找到并解决,但您越解决问题就越难以进一步改进。性能分析通常是查找瓶颈的最简单方法,所以从修复这些瓶颈开始。

1

这是一个较老的问题,但如果网站没有改变,答案是可怕的。

藏书票是加载:

  • 〜图像500KB
  • 140KB的JS
  • 只有85 HTTP请求
  • 总下载:737KB

GRAMMA是负载:

  • 图像〜1050KB
  • 275KB的JS
  • 有113个HTTP请求
  • 总下载:1537KB

基本上,你的网站是双重的大小几乎每一个方面,加你正在使用Flash,这又在客户端机器上打了一针。

使用CSS Sprites和缩小你的JS肯定会有所帮助。请注意,这些数字是第一次加载的,您的网站在一分钟后下载的内容越来越多,超过了10MB,而Libris网站则更加静态。