2009-04-11 58 views
1

我建立了一个在线新闻门户,在此之前对我来说工作正常,但有人说主页速度有点慢。当我想到它时,我看到了这个原因。数据访问ASP.NET

该网站的主页显示

  1. 标题
  2. 现场新闻(子标题
  3. 斑点图片
  4. 大多数阅读新闻(如标题)
  5. 最多评论的新闻(作为标题)
  6. 每个新闻类别的5个新闻标题(共11个,例如体育,经济,地方,健康 等)

现在,它们中的每一个都是对db的单独查询。我有tableadapters数据集和数据表(标准数据访问方案),所以对于标题,我称之为新闻类中的业务逻辑,通过tableadapter返回数据表。从那里开始,我要么通过将它绑定到控件或者(大部分时间)将对象转换为(新闻)列表来使用数据表,并且从那里消耗它。

虽然这样做对于上述每个似乎很好。至少它不会承受巨大的负担。但让我怀疑是否有更好的方法。

例如,我上面描述的项目是一个高度动态的网站,当他们从机构24小时不间断地到达时插入新闻。所以在这种情况下缓存可能听起来不太好。但另一方面,我知道还有一个当地报纸的类似项目。该网站只会每天更新一次。在这种情况下: 我只能运行一个查询,它会返回一个包含今天插入的所有新闻项目的数据表,然后查询该数据表并将标题,点和其他项目放置到站点上它们各自的位置?还是有更好的选择?我只是徘徊其他人如何以最有效的方式执行类似的任务。

回答

2

我想你应该使用FireBug来找出需要花费时间加载的元素。有时候大的图像可能会破坏节目(并且屏幕上图像的大小并不总是与其下载大小有关)。

其次,您可以下载Yahoo Firefox插件YSlow并调查是否有任何放缓的脚本。

但Firebug应该给你最好的评论。加载Firebug后,点击'Net'标签查看页面中每个元素的加载时间。

+0

+1使用Firebug和YSlow进行客户端分析。 – Anthony 2009-04-11 07:41:29

2

如果你的表现不佳,你的第一步就是不要开始瞎搞。 配置您的代码。准确找出缓慢的原因。传输页面,渲染页面或实际动态生成页面是否放缓?单个查询耗时过长吗?

准确找出瓶颈在哪里并在其核心攻击问题。

即使在内容更新速度相当快的情况下,缓存也是一个非常好的主意。只要你的缓存机制是智能的,你仍然可以节省很多时间。如果是新闻门户或博客而不是论坛,那么使用缓存系统可能会大大提高性能。

1

如果您发现您的延迟来自数据库,请检查您的表格,确保它们已正确编制索引,群集或您需要的任何其他数据,具体取决于表格中的数据量。另外,如果您使用动态查询,请尝试使用存储过程。

如果您想要在一个数据库请求中完成多个查询,您可以。由于最初你不会显示任何数据,直到所有查询完成,并且禁止任何其他问题,您至少可以节省每次查询访问数据库的时间。数据集包含表的集合,它们可以由同一个请求中的多个查询生成。

ASP.NET为您提供了一个非常好的缓存机制(HttpContext.Cache),您可以环绕它并使其更易于使用。既然你可以设置你的缓存对象的生命周期,你不必担心文章和标题不是最新的。

如果您在本网站上使用WebForms,请禁用ViewState以获取并不真正需要它们的控件,只是为了加快页面的加载速度。更不用说大量的其他调整和更改,使页面加载速度更快(gzipping,最小化脚本等)

仍然,在做任何这之前,做Anthony suggested和配置文件您的代码。找出真正的问题。