将图像作为响应流发送,或使用JSON响应指向文件共享上的图像

时间:2012-01-17 08:54:48

标签: c# performance rest architecture image-processing

我想知道使用这些不同技术的利弊。

将图像作为respose流发送只会向服务器发出一个请求,但会为服务带来更多处理能力。

与将文件保存在文件共享上并将网址发送回客户端,并让客户端直接在文件共享上请求图像相比。

您会推荐什么策略,此服务会有大量请求。

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是直接发送图片,因为:

  • 只有一个请求
  • 它没有操纵硬盘
  • RAM中的图像使用较少

另一方面,我看到很多缺点:

  • 您使用硬盘驱动器两次(写入和读取)
  • 您的服务器必须处理两个请求
  • RAM中的图像用于写入,读取和发送

你必须做一些测试,但我认为直接发送图像会更加贪婪,但总的来说,保存的图像解决方案越贪婪。

答案 1 :(得分:0)

基本上它取决于图像的处理需求。

如果您的图片专门针对每个请求进行处理,则您每次都需要动态创建新图像。在这种情况下,没有理由保存您的文件并在链接中共享它。

如果您的图片将被其他请求重复使用,那么您可以同时考虑这两种情况。流式传输开销不是一个完全棘手的问题,但开销存在:

  • 处理开销
  • 请求由托管代码处理
  • 每个请求调用的所有httpmodules /处理程序
  • 即使被iis(动态缓存)缓存,流式传输也比发送文件更昂贵。
  • 您将难以跨多个服务器共享此文件 - >仅限本地缓存(如果您必须支付分布式缓存访问权限,则不再相关),此外,应通过cdn访问文件

此外,出于性能原因,您应该尽快释放其他请求以处理您的http请求,然后获取静态文件映像是浏览器上另一个有效的网络任务。

要恢复,请考虑您的使用情况和图像数据的生命周期。