C# 使用HttpHandler在ASP.Net网页中加载缩略图
我的要求是在我的Asp.NETWeb应用程序中在2秒内加载100个缩略图。每个图像的实际大小约为800 KB。因此,我使用web处理程序方法动态地重新调整图像大小(此处图像大小减小为8KB)。在这里,我发现96个请求被发送到服务器,缩略图在4秒内加载。我发现90%的时间都浪费在Firebug net选项卡中检查的阻塞中。所以我从96个请求变成了一个请求。因此,web处理程序接受一个请求,创建96个缩略图图像,并将96个缩略图组合成一个大的单个图像,然后将此单个图像写入输出流。然后,我使用.Net线程池机制在web处理程序中创建缩略图。因此,加载时间减少到2.6秒。我发现服务器处理实际只花费了1秒或更短的时间。剩余的1.6秒正在丢失。我的问题如下C# 使用HttpHandler在ASP.Net网页中加载缩略图,c#,asp.net,httphandler,C#,Asp.net,Httphandler,我的要求是在我的Asp.NETWeb应用程序中在2秒内加载100个缩略图。每个图像的实际大小约为800 KB。因此,我使用web处理程序方法动态地重新调整图像大小(此处图像大小减小为8KB)。在这里,我发现96个请求被发送到服务器,缩略图在4秒内加载。我发现90%的时间都浪费在Firebug net选项卡中检查的阻塞中。所以我从96个请求变成了一个请求。因此,web处理程序接受一个请求,创建96个缩略图图像,并将96个缩略图组合成一个大的单个图像,然后将此单个图像写入输出流。然后,我使用.Net
8KB per image * 100 images ~= 1MB of data
1 M bytes = 8 M bits
8 M bits / 1.6 secs = 5 Mbps transfer rate
... sounds reasonable to within an order of magnitude
您的“一个大映像”方法可能更好,因为这将减少100个单独请求的开销。不过,请注意在ASP.NET进程中使用后台线程
传输时间是一个限制因素。即使您可以让服务器立即响应,您仍然需要等待数据返回到客户端
另一个限制因素是客户端浏览器渲染图像的速度
基本上,您的需求正在突破实用ATM的界限
>我的处理时间浪费在哪里了。服务器端还是客户端
也许它介于。。。1.6秒似乎是传输数据的正确时间:
8KB per image * 100 images ~= 1MB of data
1 M bytes = 8 M bits
8 M bits / 1.6 secs = 5 Mbps transfer rate
... sounds reasonable to within an order of magnitude
您的“一个大映像”方法可能更好,因为这将减少100个单独请求的开销。不过,请注意在ASP.NET进程中使用后台线程
传输时间是一个限制因素。即使您可以让服务器立即响应,您仍然需要等待数据返回到客户端
另一个限制因素是客户端浏览器渲染图像的速度
基本上,您的需求已经突破了实际ATM的界限。如果没有看到您已经尝试过的代码,就无法告诉您很多信息……生成缩略图的代码是这样的:?如果没有看到您已经尝试过的代码,就无法告诉您很多信息……生成缩略图的代码是这样的:?