ASP.NET应用程序提供图像的最佳方式:使用httphandler或静态资源。

3
在我们的Web服务器上,我们希望提供可用于HTML元素的URL,以显示用户个人资料图片。
我可以通过两种方式来实现:
1. 将图像作为静态资源放在Web服务器上:mysite.com/user1.jpg
2. 实现一个IHttpHandler:mysite.com/images?userid=1
这两种方法有哪些优劣势呢?
3个回答

4
不通过ASP.NET处理图像,而是将它们作为静态内容交给IIS处理,并完全绕过ASP.NET管道,这样会更快。
实现一个HttpHandler除了需要代码外,还需要涉及ASP.NET管道-这会从服务器中消耗更多的资源。
基本上,如果内容是静态的,请让它保持静态状态并让IIS处理它。

2

虽然让IIS处理图像会更容易,但这取决于您是否想在发送时压缩文件?

某些版本的IIS支持GZIP压缩,这意味着您可以在IIS提供服务时压缩文件,但是旧版本的IIS可能不支持,这意味着如果您需要压缩文件,则必须使用HTTPHandler或类似方法来压缩和提供服务。


我们正在使用IIS 7.5,但有一个好问题。IIS是否足够聪明,只在调用浏览器可以处理时才进行压缩? - GarethOwen
在这种情况下,我认为你应该自然地为他们提供服务并实现GZIP压缩。这将加快速度并减少带宽消耗 ;) - Gavin

2
让IIS来处理它们。从处理程序中提供图像可能会占用大量资源,除非绝对必要,请勿这样做。
如果您的网站有很多图片,这意味着需要处理许多额外的Asp.net请求。每个请求Asp.net需要比IIS推送静态文件所需的资源多得多。

好的答案 - Oded稍微快了一点,所以他被标记为“正确”。 - GarethOwen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接