Sni*_*tor 5 iis performance httpmodule asp.net-web-api
我把一起使用的ASP.NET Web API文档管理服务,以及性能的一些担忧.
基于IIS/ASP.NET ImageResizer模块的作者Nathanael Jones撰写的这篇文章,我对服务静态文件的"最佳"性能所需的内容有了一些先入之见.正是这样:
HttpModule因为它在ASP.NET管道的早期(较少的管道=更优化),并且结果更容易处理这类事情而不是HttpHandler.Response.WriteFile(filename)比Response.Write(memBuffer)memBuffer是内存中的C#缓冲区更好.Context.RewritePath(virtualPath))更好Response.WriteFile(filename),因为它将使用IIS静态文件处理程序,这是经过优化的.麻烦的是,由于一些奇怪的缓存问题,我仍然无法达到(这里)的底部,我的URL重写技术本身并不表现.
所以现在我想知道更多以Web API为中心的实现,如下所示:
public Task<HttpResponseMessage> DoTheFoo()
{
return Task<HttpResponseMessage>.Factory.StartNew(() =>
{
var response = new HttpResponseMessage();
response.Headers.Add("Content-Disposition", "inline; filename=\"" + attachmentFileName + "\"");
response.Headers.Add("content-type", mimeType);
response.Content = new StreamContent(File.OpenRead("somefile.doc"));
return response;
});
}
Run Code Online (Sandbox Code Playgroud)
对于Web API解决方案,这显然会使事情变得更加简洁,因为服务的文件服务部分可以与控制器中的其他操作一起使用,但它的执行和扩展程度如何?我思考的因素:
我无法组建一个服务器场来测试它以获得真实的性能数据,而且我怀疑将小规模测试结果分解会给出任何准确的结果.那些知情人士,我可以期待什么样的差异?我几乎已经准备好放弃URL重写实现,但如果它会给我一个明显的性能影响,我会坚持下去.
不确定您是否计划在 Azure 中托管,但如果您计划在 Azure 中托管,则可以为图像使用专用的公共 Blob 存储容器。然后使用 CDN 服务为您提供(和缓存)静态文件。这会将问题从 API 转移到 CDN 中,CDN 旨在处理静态资源。