【问题标题】:Improve Performance of Image based application提高基于图像的应用程序的性能
【发布时间】:2012-05-26 07:22:47
【问题描述】:

我们正在开发基于产品的应用程序。他们在其中使用了很多图像。我们希望提高应用程序的性能。我们可以使用哪些最佳实践来加快速度。

我们正在 APS.net(C#) 中开发此应用程序。我们可以使用 Asp.net 的哪些功能使其更快。或者我们应该记住哪些事情来让它更快。

【问题讨论】:

    标签: c# asp.net performance image


    【解决方案1】:

    优化网络上的图像。我先把它分成两部分。

    优化客户端

    1) 尽可能多地缓存图像等静态媒体。这是适用于 IIS 7 及更高版本的 web.config 示例。

       <system.webServer >
            <staticContent >
                <clientCache cacheControlMaxAge ="8.00:00:00" 
                                   cacheControlMode="UseMaxAge" />
            </staticContent>
        </system.webServer>
    

    2) 正确媒体的正确图像

    • 对没有退化颜色的小图像使用 gif。
    • 对使用降级的图像使用 jpg。
    • 仅当您通过降级获得透明时才使用 png。

    3) 从一个页面到另一个页面使用相同的图像,或者尝试只更改最小数量。

    优化服务端

    1) 通过在磁盘上制作真实文件来缓存图像的自动创建。所以不要总是制作缩略图,制作一个缩略图,将其保存到磁盘并将此 url 提供给 html 页面。所有下一个请求都必须知道缩略图都已经存在并且只需给出这个 url

    2) 改变图像质量和大小的参数有:

    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    

    还可以使用 SaveAsJpeg 功能更改 Jpeg 的大小:

    SaveAsJpeg(outputImage, TheFileNameTosaveIt, GetQualityForSave());
    

    结束

    还有许多其他优化图像的技巧,您可以在书本上和网络上到处找到这些技巧。

    【讨论】:

    • 如果您正在做服务器端图像工作,我建议您查看imageresizing.net。在服务器上运行 System.Drawing 很容易发生内存泄漏,尤其是在您没有 Win/C++ 背景的情况下。 .NET GC 不适用于 System.Drawing。
    • @Aristos 感谢您的详细解释。这是很好的信息。:)
    • 嗨@Aristos 在结束时你试图提到一些链接。我想您忘了提及它们(“还有许多其他技巧可以优化您可以在here and there、书籍和网络上找到的图像。”)
    • @VSoni 我的意思是,如果您查看互联网,总会有一些想法,例如在用户尝试查看图像后加载图像。这是你决定的事情,如果它适合你。像这个想法还有很多,但我没有链接可以显示,只是在互联网上搜索,看看他们做了什么或建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2013-03-21
    • 1970-01-01
    • 2010-11-12
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多