【问题标题】:How can i load website's summary contents faster?如何更快地加载网站的摘要内容?
【发布时间】:2015-08-04 18:22:58
【问题描述】:

我在我的网站的 MasterPage 上有一个方法,它会加载我网站的摘要内容,例如最新消息、最新帖子、最常访问的帖子等。所有数据均已从 SQL 数据库表中加载。每次用户访问都会调用此方法(每天超过 40000 次),因此我每天有 40000 个不必要的数据库连接,因为这些数据通常每天最多更改 4 或 5 次。

我的问题是:优化页面加载速度并仅在更改时连接到数据库的解决方案是什么。

我有一个解决方案,但我不确定。只有在数据更改时,我才能连接到数据库并获取内容数据集并将其写入 XML 文件,然后从我的 MasterPage 读取 XML 文件。

请告诉我最佳解决方案以及您对我的解决方案的看法。

谢谢

【问题讨论】:

  • 您看到新数据有多紧迫?如果您不介意数据陈旧(例如)2 分钟,那么只需将缓存放入...我怀疑您会发现这比更改检测更容易实现。
  • 没有。这并不紧急。如何缓存?
  • 嗯,这是一个非常广泛的问题 - 我建议你做一些研究......

标签: c# sql asp.net sql-server xml


【解决方案1】:

我不知道你究竟是如何检测到你的数据发生变化的,在我的例子中,我有一个 DataTable 存储在 Cache 中,当用户添加或修改记录时,我设置了 null 我的 @987654324 @变量,当我再次填充时调用它,由于DateTime.Now.AddMinutes(5d),它也会每5分钟被删除一次@

DataTable dtJobs
{
    get { if (Cache["dtJobs"] == null) Cache["dtJobs"] = Provider.Job.getAll(); return (DataTable)Cache["dtJobs"]; }
    set { if (value != null) Cache.Insert("dtJobs", value, null, DateTime.Now.AddMinutes(5d), System.Web.Caching.Cache.NoSlidingExpiration);
          else Cache.Remove("dtJobs");
    }
}

【讨论】:

    【解决方案2】:

    我认为您的解决方案没有问题。我唯一要添加的是页面:

    1. 读取xml文件(如果存在)
    2. 读取后删除文件
    3. 使用 ASP.Net Caching 来缓存文件的内容

    现在,MasterPage 将首先检查文件是否存在,如果文件存在,则表明数据已更改,需要更新缓存。如果文件不存在,则缓存中的数据是我们拥有的最新数据,可以使用。

    从缓存(服务器 RAM)中拉取数据非常快,比读入文件(文件 IO)快得多,这比连接到 Db 并从那里获取数据要快得多。

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      相关资源
      最近更新 更多