gpt4 book ai didi

ASP.Net - 多个动态图像。由于 Http 请求过多导致的性能问题

转载 作者:行者123 更新时间:2023-12-02 07:16:26 27 4
gpt4 key购买 nike

我使用 HttpHandler 在 ASP.Net 网络应用程序中动态提供图像。我有一个性能问题(Firfox/Firebug/YSlow 报告有太多的 HttpRequests)

在某些情况下,我每页有 50-100 张图片。3 个 TreeView (业务单位/类别/对象),每个节点都有自己的图片;)

每个项目的图片 url 都是动态设置的...

SomeImage.ImageUrl = "/image.axd?ImageId={0}";

注意:我只知道在运行时需要哪些图像。

附加:图像位于服务器文件系统、资源文件和数据库中 - 用户可以上传自己的图像以与我的系统对象相关联,ImageHandler 将动态确定每个图像位置)

在 web.config 中,httphandler 已配置并按预期工作...添加 verb="GET"path="image.axd"type="Vision.OnsightManager.ImageHandler"

在 HttpHandler 中,原始图像字节被返回以响应每个图像请求。所以在图像处理程序的 WriteResponse() 方法中,图像字节被返回,就像这样......

context.Response.BinaryWrite(bytes);

所有图像都正确显示,但应用程序在显示许多图像时出现预期的性能问题...

问题:

除了减少图像数量 ;),您推荐什么方法来最小化为每个图像生成的所有 HttpRequest?也许合并成一个 Http 请求?

我已经阅读了有关将多个 css 请求组合成一个请求、使用图像映射(单个组合图像和偏移量)等的文章,但似乎没有一个适合我的特定场景?

非常感谢!

最佳答案

减少服务器对重复请求的压力的一种方法是使用页面缓存能力。

在 HttpHandler 中的 Response.Write 之前添加:

// Set for how long you want the image to be cached.
context.Response.Cache.SetExpires(DateTime.Now.AddDays(1));
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetValidUntilExpires(true);
context.Response.Cache.VaryByParams["ImageId"] = true;

这将使服务器缓存结果(取决于 ImageId 参数)但这当然只会帮助重复请求相同的图像,而不是第一个,所以这取决于实际问题出在哪里。

在不太了解您的应用程序的情况下,听起来您必须更改几处才能找到更好的解决方案...

关于ASP.Net - 多个动态图像。由于 Http 请求过多导致的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com