我很快就爱上了ASP.NETMVC测试版,我决定在部署到IIS6托管环境时不会牺牲的一件事是无扩展URL.因此,我正在权衡添加通配符映射的考虑,但我读到的所有内容都表明在使用此方法时可能会影响性能.但是,我找不到任何实际的基准!

这个问题的第一部分是,你知道我在哪里可以找到这样的基准,还是这只是一个未经验证的假设?

问题的第二部分是关于我使用jMeter在我们的开发服务器上通过100Mbs连接运行的两个负载测试.

Background Info

我们的托管Provider 有一个4Gbs的burstable internet管道,带有1Gbs的VLAN主干,所以我可以通过办公室局域网生成的任何东西都应该能够很好地转化为托管环境.

测试场景是加载几个图像/CSS文件,因为假定的性能影响是在请求现在正在通过ASP.NETISAPI过滤传递的文件时发生的,而这些文件通常不会通过它.每个测试包含50个线程(模拟用户),每个线程运行请求脚本1000次.每项测试的结果如下所示.

Test Results

不使用通配符映射:

Samples: 50,000
Average response time: 428ms
Number of errors: 0
Requests per second: 110.1
Kilobytes per second: 11,543

使用通配符映射:

Samples: 50,000
Average response time: 429ms
Number of errors: 0
Requests per second: 109.9
Kilobytes per second: 11,534

这两个测试都是热运行的(所有内容都在内存中,没有初始负载偏差),从我的Angular 来看,性能大致相当.在两次测试期间,CPU使用率约为60%,内存良好,网络利用率稳定在90-95%左右.

这足以证明通过ASP.所有内容的净过滤不会影响性能,还是我遗漏了什么?

编辑:11个小时没有一条 comments ?我希望能有更多..英雄联盟

推荐答案

克里斯,非常方便.

许多认为性能存在缺陷的人推断,web应用程序中处理的代码与标准工作流中处理的代码有多大的不同/低劣.基本代码类型可能不同,当然您需要MSIL解释器,但MS已经表明,在许多情况下,您实际上会看到一个应用程序的性能提高.NET运行时,而不是本机运行时.

明智的做法是考虑IIS必须是"所有行业的杰克"——允许各种配置和重写even on static files.其中一些是为了提高性能而设计的(缓存、压缩),实际上,除非您在代码中重新实现它们,否则它们将丢失,但其中许多用于其他目的,可能永远不会被使用.如果你只为自己的需求而构建,你可以忽略其他部分,并且应该实现某种性能优势,即使存在潜在的ASP.净劣势.

在我的(非.NET)MVC测试中,我看到比WebForms有相当大的(10倍或更多)性能优势.即使静电上的内容有一点小的轰动,那也不是一个难以下咽的药丸.

在你的测试中,这种差异几乎可以忽略不计,我并不感到惊讶,但我很高兴看到它得到了支持.

注意:您可以从静态目录禁用通配符映射(我将所有静态文件保存在/static/(pics | style |…)中)在IIS中.将文件夹切换到一个应用程序,删除通配符映射,然后将其从应用程序切换回原来的位置.瞧,静态文件由IIS处理,而不会困扰ASP.网

Asp.net相关问答推荐

调用context.Users和context.Set User有什么区别?

如何在 GridView 单元格中的(即
)中呈现解码的 HTML

在每页级别增加 ASP.Net 超时

如何更改 .ASPX 自动格式化设置 (Visual Studio)

FluentValidation 使用数据库的唯一名称验证

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

如何从 JS 访问 ViewBag

如何使用 app_GlobalResource 或 app_LocalResource?

如何从 HTTP 请求中获取 MAC 地址?

会话变量保存在哪里?

IIS 10 上的 ASP.NET Core 404 错误

asp.net 有控制台日志(log)吗?

WebForm_PostBackOptions 文档

VS2017 无法加载文件或程序集 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 或其依赖项之一

ASP.NET 按钮重定向到另一个页面

ASP.NET 身份提供程序 SignInManager 不断返回失败

在 ASPNET 标识 2.0 中禁用用户

使用 NLog 在 ASP.NET Web API 2.1 中进行全局异常处理?

ASP.NET MVC 5 Web.config:FormsAuthenticationModule或FormsAuthentication

重新生成designer.cs