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