图像代理的性能

时间:2009-12-17 03:24:05

标签: c# .net image-manipulation

我不擅长提出一个问题,请随意改写/重新命名,以使其更容易理解。感谢。

我有一个图像代理页面帮助我处理所有带有自定义操作值的产品图像请求。例如:

http://mysite.com/ImageProxy.aspx?id={ITEM ID}&width={WIDTH}&height={HEIGHT}&gloss={GLOSS}&reflection={REFLECTION}

为减少服务器端负载,我通过保存已生成图像的文件进行缓存,以便在调用具有相同操作值的相同产品时重复使用。

这在开始时有效,但在单个页面中显示更多图像时速度会变慢。 我想知道如何改善这种情况,或者图像代理往往因其自然而变慢?

*已编辑:*

我:

  • 使用ASP.NET MVC
  • 进行开发
  • 使用System.Drawing.Drawing2DSystem.Drawing.Imaging来操纵图片。
  • 目前页面大小约为500kb *(结果页面),每页8~10张图片,每张图片30~50kb(PNG)。
  • 图像目前是PNG,透明度为反射和圆角效果,因为选项和图像可能位于各种背景纯色背景上(即/ GIF可能是一个选项)。

1 个答案:

答案 0 :(得分:3)

试试这个:

    // GetCacheFileName -> Returns the full path of the "cached" image
    // CreateImage -> Used to create a new image if necessary
    string cacheFile = GetCacheFileName(param1, param2, param3, param4);
    if (!File.Exists(cacheFile))
    {
        Image cacheImage = CreateImage(param1, param2, param3, param4);
        cacheImage.Save(cacheFile, ImageFormat.Jpeg);
    }

    Response.ContentType = "image/jpeg";
    Response.TransmitFile(cacheFile);

这里要注意的两件事是:

  • 告诉框架将图像保存为jpeg
  • 将文件保存到磁盘并使用Response.TransmitFile而不是Response.WriteFile或Response.OutputStream.Write