我正在使用ASP.NET Web API整合文档管理服务,并且某些关注性能。
基于IIS / ASP.NET ImageResizer模块的作者Nathanael Jones的this article,我已经对最佳"以及最佳"的所需内容产生了一些先入之见。服务静态文件的性能。其存在的原因是:
HttpModule
,因为它在ASP.NET管道的早期(较少的管道=更优化)并且比{{1}更容易处理这类事情}。HttpHandler
优于Response.WriteFile(filename)
,其中memBuffer是内存中的C#缓冲区。Response.Write(memBuffer)
)优于Context.RewritePath(virtualPath)
,因为它将使用经过充分优化的IIS静态文件处理程序。麻烦的是,由于一些奇怪的缓存问题,我仍然无法找到(here)的底部,我的网址重写技术本身并没有表现出来。
所以现在我想知道更多以Web API为中心的实现,如下所示:
Response.WriteFile(filename)
对于Web API解决方案,这显然会使事情变得更加简洁,因为服务的文件服务部分可以与控制器中的其他操作一起使用,但它的执行和扩展程度如何?我思考的因素:
我无法组建一个服务器场来测试它以获得真实的性能数据,而且我怀疑将小规模测试结果分解会给出任何准确的结果。那些知情人士,我可以期待什么样的差异?我几乎已经准备好放弃URL重写实现,但如果它能给我一个明显的性能影响,我就会坚持下去。
答案 0 :(得分:1)
不确定您是否计划在Azure中托管,但如果您是,则可以为图像使用专用的公共Blob存储容器。然后使用CDN服务为您提供(和缓存)静态文件。这会将问题从您的API转移到CDN,CDN旨在处理静态资源。