【问题标题】:Data Access ASP.NET数据访问 ASP.NET
【发布时间】:2010-10-18 21:15:11
【问题描述】:

我建立了一个在线新闻门户,之前它对我来说很好,但有人说主页有点慢。当我想到它时,我明白了其中的原因。

网站首页显示

  1. 头条新闻
  2. 现场新闻(副标题
  3. 有图片的景点
  4. 阅读最多的新闻(作为标题)
  5. 评论最多的新闻(作为标题)
  6. 每个新闻类别 5 个新闻标题(总共 11 个,例如体育、经济、地方、健康 等等。)

现在,这些都是对数据库的单独查询。我有 tableadapter 数据集和数据表(标准数据访问场景),所以对于标题,我调用我的新闻类中的业务逻辑,它通过 tableadapter 返回数据表。从那里开始,我要么通过将数据表绑定到控件来使用数据表,要么(大多数情况下)对象将其转换为(新闻)列表,然后我从那里使用它。

不过,为上述每一项执行此操作似乎都可以正常工作。至少它不会带来巨大的负担。但是让我想知道是否有更好的方法。

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

【问题讨论】:

    标签: asp.net dataset data-access system.data.datatable


    【解决方案1】:

    我认为您应该使用 FireBug 找出哪些元素需要时间来加载。有时大图像会毁掉节目(屏幕上的图像大小并不总是相对于其下载大小)。

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

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

    【讨论】:

      【解决方案2】:

      如果您的表现不佳,您的第一步不是开始胡闹。 分析您的代码。 找出它运行缓慢的确切原因。是传输页面、渲染页面还是动态生成页面的速度变慢了?单个查询是否耗时太长?

      找出瓶颈的确切位置并从根本上解决问题。

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

      【讨论】:

        【解决方案3】:

        如果您发现延迟来自数据库,请检查您的表,确保根据表中的数据量对它们进行正确的索引、集群或其他任何您需要的操作。此外,如果您使用的是动态查询,请尝试使用存储过程。

        如果您想在一个数据库请求中完成多个查询,您可以。由于最初在所有查询完成之前您不会显示任何数据,并且除非出现任何其他问题,因此您至少可以节省每次查询再次访问数据库的时间。 DataSet 包含一组表,它们可以由同一请求中的多个查询生成。

        ASP.NET 已经为您提供了一个非常好的缓存机制 (HttpContext.Cache),您可以将其包裹起来并使其更易于使用。由于您可以为缓存对象设置生命周期,因此您不必担心文章和标题不是最新的。

        如果您在该网站上使用 WebForms,请禁用不需要的控件的 ViewState,以使页面加载速度更快一些。更不用说为加快页面加载速度而进行的大量其他调整和更改(gzip、最小化脚本等)

        不过,在执行任何操作之前,请按照Anthony suggested 的身份执行并分析您的代码。找出真正的问题是什么。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-12
          • 2013-06-21
          • 2011-12-10
          • 2011-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-03
          相关资源
          最近更新 更多