在我们的网络服务器上,我们希望提供可用于 HTML 元素的 url,用于显示用户个人资料图片。
我可以通过两种方式做到这一点:
- 将图片作为静态资源放在网络服务器上:mysite.com/user1.jpg
- 实现一个 IHttpHandler:mysite.com/images?userid=1
一种方法比另一种方法有什么好处吗?
不通过 ASP.NET 处理图像,而是让 IIS 将它们作为静态内容处理并完全绕过 ASP.NET 管道将是最快的。
除了需要代码之外,实现HttpHandler
.NET 还需要涉及 ASP.NET 管道——这需要服务器的更多资源。
基本上,如果内容是静态的,就让它是静态的,让 IIS 处理。
虽然允许 IIS 处理图像会更容易,但这取决于您是否要在发送文件时对其进行压缩?
某些版本的 IIS 支持 GZIP 压缩,这意味着您可以在 IIS 为它们提供服务时压缩文件,但是,旧版本的 IIS 可能不支持,这意味着如果您需要压缩文件,则必须使用 HTTPHandler 或类似的压缩和为他们服务。
让 IIS 处理它们。从处理程序提供图像可能会占用大量资源。除非绝对必要,否则不要这样做。
如果您的站点有很多图像,这意味着 Asp.net 需要处理许多额外的请求。与 IIS 推出静态文件所需的资源相比,Asp.net 每个请求需要更多的资源。