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

标签 asp.net asp.net-mvc-3 scalability

我被问过几次以下问题,我觉得我可以有更好的答案,所以我在这里转发它,希望能找到更多关于编写可扩展 MVC3 C# 代码的资源、博客书籍或指针。如果您有任何关于编写跨多台服务器托管的性能更好的代码的建议,我将不胜感激。为了论证起见,我们可以说它适用于预计每天点击量超过 10-20K 的代码。

题:
在编写分布在多个服务器上的可扩展代码时,您考虑了哪些编码注意事项?

我的直觉告诉我答案在于处理 session 。我在过去几年的背景是编写服务和表单应用程序,而不是为 Web 应用程序编写那么多,所以我正在寻找可以帮助我进行特定于 C# MVC3 的 Web 应用程序开发的信息。您建议的任何博客或书籍我一定会研究!

最佳答案

实现可扩展 Web 应用程序的规则之一是让它们无状态。 Session 是第一个应该被排除在外的东西,因为这正是使应用程序有状态的原因。如果您有一个完全无状态的应用程序,您可以在流量增加时抛出硬件,并且应用程序将能够处理它。因此,首先将以下行放在您的 web.config 中:

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

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

关于asp.net - 高流量 ASP.NET MVC 编码注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945334/

相关文章:

asp.net - 允许在文本框中使用 HTML

c# - 使用伪造的 HTTPContext 对 ASP.NET Web API Controller 进行单元测试

jquery - Ajax 文件上传在 IE7 中不起作用

python - 在机器之间传递变量的有效方法有哪些?

css - 什么样的背景图像尺寸适合每台显示器的页面尺寸?

c# - 如何反编译 ASP.NET/C# Web 应用程序

.net - 我注释掉了HTML代码,但是里面的控件没有被禁用

asp.net-mvc-3 - 具有 MVC3、ASP.NET 成员资格的多用户应用程序 - 用户身份验证/数据分离

asp.net-mvc-3 - 在 ASP.NET 应用程序中是否强制注入(inject) DbContext .InPerRequestScope?

asp.net - 大型站点不将 MySQL 与 ASP.NET 一起使用的原因是什么?