Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# StackOverflow如何优化问题显示的性能?_C#_Asp.net_Database Design_Paging - Fatal编程技术网

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

C# StackOverflow如何优化问题显示的性能?,c#,asp.net,database-design,paging,C#,Asp.net,Database Design,Paging,我正在尝试学习C.net来编写web应用程序 了解到stackoverflow使用C.net后,我很高兴发现它 我注意到在主页或问题部分,每当我刷新页面时。页面总是以可接受的速度毫无疑问地向我返回最新信息 我不知道你是怎么做的。很抱歉问了这么多问题。我试图了解数据检索、分页、性能等方面的最佳实践是什么 我知道主页只返回有限数量的问题及其统计数据,但问题部分实际上返回了所有内容 你如何优化它 对于主页,您是否总是获取最近问题的所有统计信息?所以您的查询类似于从问题中选择*按日期时间排序\u创建限制

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

了解到stackoverflow使用C.net后,我很高兴发现它

我注意到在主页或问题部分,每当我刷新页面时。页面总是以可接受的速度毫无疑问地向我返回最新信息

我不知道你是怎么做的。很抱歉问了这么多问题。我试图了解数据检索、分页、性能等方面的最佳实践是什么

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

你如何优化它

对于主页,您是否总是获取最近问题的所有统计信息?所以您的查询类似于从问题中选择*按日期时间排序\u创建限制20

那么*包含所有信息,包括问题标题、id、视图等

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

对于这些问题,这一点更加有趣

你是如何进行寻呼的

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

或者您是否获取所有结果并将其存储到数据集中?然后使用某种datagrid控件来帮助分页


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

因此使用MVC和LINQ2SQL。我会听一些文章来了解更多的细节。我知道他们使用了大量缓存,但不确定是否包括主页上的问题列表。

我不知道他们是如何做到的-我没有这样写

对于类似这样的问题,我会对整个问题类及其所有答案使用某种缓存机制。缓存将是短暂的,但由于新的/热门问题经常被查看,它们将保持活动状态。旧问题必须向DB提出。当一个人回答问题而另一个人查看问题时,这也可以防止线程问题

这里您可以注意到的另一件事是,它们大量使用AJAX。但是,由于AJAX.Net非常浪费带宽,因此他们实现了AJAX调用,以便返回简单的JSON对象,例如,当使用新的投票数对成功对象进行升级投票或返回错误消息时,例如:这是一个虚构的例子,不能代表发生了什么,因为我现在懒得检查


AJAX.Net将返回整个UpdatePanel的内容,无论其大小,无论多么小,都会非常大。

在堆栈溢出方面,我们尝试在多个级别上使用积极的缓存:

页面完全由IIS的输出缓存缓存,而不考虑用户身份验证 仅为匿名用户缓存的页面;注册用户可以看到最新的内容 为每个人缓存的页面html部分;HttpRuntime.Cache用于此 主页由三个缓存的html片段组成——最近的问题、最近的标签、最近的徽章——每个都有不同的持续时间

问题列表页面将缓存特定排序/标记筛选器的所有问题的ID Int32[],这使得分页变得微不足道。对统计数据(如问题计数、相关标记计数)进行进一步缓存

匿名用户将完全缓存问题详细信息页面,而注册用户将看到最新商品。另外,旁边的相关问题会被缓存到磁盘上更长的时间

当我们尽可能地缓存整个页面时,我们会在页面顶部显示用户信息——有些部分无法缓存


因此,将缓存看作一个难题——我的所有请求之间可以安全地共享哪些部分?根据费用,我的所有请求都必须共享哪些部分?

您可能还想看看这个


这是一组试图模拟堆栈溢出的文章。您应该可以在CodePlex找到代码库。

请向Jeff发送如此具体的问题,这里没有人知道他是如何实现他的玩偶的。您的意思是通过电子邮件发送给team@stackoverflow.com? 如果那是正确的寄送地点,我会的。我只希望我没有滥用它,仅此而已。直接从马嘴里说。
{"status": "ok", "votes": 3}