高流量ASP.NET MVC编码注意事项

高流量ASP.NET MVC编码注意事项,asp.net,asp.net-mvc-3,scalability,Asp.net,Asp.net Mvc 3,Scalability,我已经被问了好几次下面的问题,我觉得我可以有一个更好的答案,所以我在这里转述它,希望找到更多关于编写可伸缩MVC3 C代码的资源、博客书籍或指南。如果您对编写跨多台服务器托管的性能更好的代码有任何建议,我将不胜感激。为了便于讨论,让我们假设它适用于预期每天点击量超过10-20K的代码 问题: 在编写分布在多台服务器上的可伸缩代码时,您考虑了哪些编码考虑因素 我的直觉告诉我,答案在于如何处理会议。在过去几年中,我的背景是编写服务和表单应用程序,而不是为web应用程序编写服务和表单应用程序,因此我正

我已经被问了好几次下面的问题,我觉得我可以有一个更好的答案,所以我在这里转述它,希望找到更多关于编写可伸缩MVC3 C代码的资源、博客书籍或指南。如果您对编写跨多台服务器托管的性能更好的代码有任何建议,我将不胜感激。为了便于讨论,让我们假设它适用于预期每天点击量超过10-20K的代码

问题: 在编写分布在多台服务器上的可伸缩代码时,您考虑了哪些编码考虑因素


我的直觉告诉我,答案在于如何处理会议。在过去几年中,我的背景是编写服务和表单应用程序,而不是为web应用程序编写服务和表单应用程序,因此我正在寻找能够帮助我进行web应用程序特定开发的信息,特别是针对C#MVC3的信息。你推荐的任何博客或书籍我都会去看看

实现可伸缩web应用程序的规则之一是无状态。会话是应该从等式中排除的第一件事,因为这正是使应用程序有状态的原因。如果您有一个完全无状态的应用程序,当流量增加时,您可以抛出硬件,应用程序将能够处理它。因此,首先在web.config中添加以下行:

<system.web>
    <sessionState mode="Off" />
    ...
</system.web>

...

问题现在将出现在数据层上,因为这是状态所在。因此,为了提高性能并限制对该节点的请求数量,应该使用缓存。尽可能多地缓存数据。最好将此缓存存储在不同于web服务器的机器上。专用于进行缓存的机器。

就我个人而言,我总是尽量避免使用会话,因为在多台服务器上运行应用程序时,这会减少一点麻烦。如果您没有在应用程序中使用会话,您可以在web.config中将其关闭,以获得一个小的性能提升@xanatos-MVC不使用ViewState这是一个很好的输入,感谢您的响应。你能推荐一些有助于演示这些缓存技术的阅读材料吗?最好是C#MVC倾向,如果可能的话,但我会准备好一切再次感谢。@likestoski,这里介绍了输出缓存:也介绍了部分页面输出缓存:关于数据缓存,这里有一系列不错的帖子: