2

我的要求是在我的 Asp.Net Web 应用程序中在 2 秒内加载 100 个缩略图。每个图像的实际大小约为 800 KB。所以我使用了一种网络处理程序方法来动态调整图像的大小(这里的图像大小减少到 8KB)。在这里我发现 96 个请求被发送到服务器并且缩略图在 4 秒内被加载。我发现 90% 的时间都在阻塞中丢失在 Firebug 网络选项卡中检查。所以我从 96 请求转移到单个请求。因此,Web 处理程序接受单个请求并创建 96 个缩略图图像并将 96 个缩略图组合成一个大的单个图像并将这个单个图像写入输出流。这个案例我发现加载单个图像大约需要 6 秒。然后我使用 .Net 线程池机制在 web 处理程序中创建缩略图。因此加载时间减少到 2.6 秒。我发现服务器处理实际上只花费了 1 秒或以下的时间。剩下的 1.6 秒正​​在丢失。我的问题如下

  1. 我的处理时间在哪里浪费。服务器端还是客户端?如果它在服务器端,瓶颈在哪里?如何识别请求处理和页面加载时间?

  2. Web 处理程序是调整图像大小的更好方法吗?

  3. 我可以有任何替代解决方案吗?

我的系统配置是

处理器 - 英特尔酷睿 - i7,内存: - 4 GB

网络服务器:IIS 7

操作系统:Windows 7

请帮我

4

1 回答 1

0

> 我的处理时间在哪里浪费。服务器端还是客户端?

也许它介于两者之间...... 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 的界限。

于 2012-04-30T19:58:52.560 回答