我正在尝试学习C#.net来编写一个Web应用程序.
并且了解到stackoverflow使用C#.net我很高兴发现它.
我注意到在主页或问题部分,每当我刷新页面时.页面总是以可接受的速度向我返回最新信息.
我不知道你是怎么做到的.很抱歉这一系列问题很长.我试图了解数据检索,分页,性能等的最佳实践
我知道主页只返回有限数量的问题及其统计数据,但问题部分实际上返回了所有内容.
你如何优化它?
对于主页,您是否总是获取最近问题的所有统计数据?所以你的查询类似于"按*date*创建限制20从问题顺序中选择*"?
所以*包含所有信息,包括问题标题,身份证,观点等?
你使用HttpContext.Current.Server.cache来帮助吗?
对于这些问题,这更令人感兴趣.
你怎么做分页?
您是否始终只从数据库中获取特定页面的结果?
或者你抓住所有结果并将其存储到数据集中?然后你使用某种数据网格控件来帮助分页?
如果是后者,您如何维护要更新的数据?
在Stack Overflow上,我们尝试在许多级别上使用积极的缓存:
页面完全由IIS的输出缓存缓存,无论用户身份验证如何
只为匿名用户缓存的页面; 注册用户查看最新内容
页面的部分页面为每个人缓存; HttpRuntime.Cache
用于此
该主页是由三个缓存HTML片段-最近的问题,最近的标签,最近徽章-每个都有不同的持续时间.
一个问题列表页面将缓存IDS(Int32[]
的所有问题)特定排序/标签过滤器,使得寻呼微不足道.还完成了对统计数据的进一步缓存(例如问题计数,相关标签计数).
一个问题详细信息页面将全部缓存为匿名用户,而注册用户看到最新的产品.此外,侧面的相关问题将缓存到磁盘更长的持续时间.
虽然我们尝试尽可能地缓存整个页面,但我们确实在页面顶部显示用户信息 - 某些部分无法缓存.
所以看看缓存就像一个谜题 - 我的所有请求之间可以安全地共享哪些部分?根据费用,我的所有请求必须共享哪些部分?