gpt4 book ai didi

c# - StackOverflow 如何优化问题显示的性能?

转载 作者:太空狗 更新时间:2023-10-29 21:00:32 24 4
gpt4 key购买 nike

我正在尝试学习 C#.net 来编写 Web 应用程序。

并且了解到 stackoverflow 使用 C#.net 我很高兴发现它。

每当我刷新页面时,我都注意到在主页或问题部分。该页面始终以可接受的速度无误地向我返回最新信息。

我不知道你是怎么做到的。很抱歉提出了一系列问题。我正在尝试了解数据检索、分页、性能等方面的最佳实践是什么

我知道主页只返回有限数量的问题及其统计数据,但问题部分实际上会返回所有内容。

你如何优化它?

  1. 对于主页,您是否总是抓取最近问题的所有统计数据?所以您的查询类似于“select * from questions order by datetime_created limit 20”?

    所以 * 包含所有信息,包括问题标题、ID、 View 等?

    您是否使用 HttpContext.Current.Server.cache 来帮助解决这个问题?

  2. 对于问题,这更耐人寻味。

    如何进行分页?

    您总是只从数据库中获取特定页面的结果吗?

    还是获取所有结果并将其存储到数据集中?然后你使用某种数据网格控件来帮助分页?

如果是后者,如何维护要更新的数据?

最佳答案

在 Stack Overflow 上,我们尝试在多个层面上使用积极的缓存:

  • 完全由 IIS 的输出缓存缓存的页面,无论用户身份验证如何
  • 仅为匿名用户缓存的页面;注册用户查看最新内容
  • 为所有人缓存的部分页面 html; HttpRuntime.Cache 用于此

主页 由三个缓存的 html 片段组成 - 最近的问题、最近的标签、最近的徽章 - 每个都有不同的持续时间。

问题列表页面 将缓存特定排序/标签过滤器的所有问题的 ID (Int32[]),从而使分页变得简单。统计数据(例如问题计数、相关标签计数)的进一步缓存也已完成。

一个问题详情页将完全缓存给匿名用户,而注册用户看到的是最新商品。此外,侧面的相关问题会在磁盘中缓存更长的时间。

虽然我们尽可能缓存整个页面,但我们确实会在页面顶部显示用户信息 - 有些部分无法缓存。

所以把缓存看成一个谜题——哪些部分可以在我的所有请求之间安全地共享?根据费用,哪些部分必须在我的所有请求中共享?

关于c# - StackOverflow 如何优化问题显示的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com