第一个 ASP.NET AJAX 程序:UpdatePanel一文中介绍了 UpdatePanel 实现 Ajax,我们今天利用 Fiddler 来看看 UpdatePanel 发生了什么。
实验步骤
启动 Fiddler,访问我们事先写好的 UpdatePanel 网页(注意不要用 127.0.0.1 或 localhost)。
依次点击 btnIn、btnInToOut、btnOut、btnOutToIn 这四个按钮。
结果观察
在 Fiddler 中,我们可以得到五个会话,第一个是打开网页时产生的,后面四个是点击按钮时产生的。
- 我们在会话列表中可以看到第二、三个会话的图标是文本文件,同时拉宽列表,可以看到 Content-Type 为 text/plain,Body 只有几百字节。
- 而第四、五个会话的图标是网页,同时拉宽列表,可以看到 Content-Type 为 text/html,Body 有几千字节。
这说明在 UpdatePanel 中的按钮,的确降低了网络的通信量,不过虽然 btnInToOut 没有效果,但仍然进行了通信。
我们选中第四个会话,然后切换到 Session Inspector 标签,在下面的工作栏中单击“TextView”,可以得到类似如下的数据:
我们选中第三个会话,然后切换到 Session Inspector 标签,在下面的工作栏中单击“TextView”,可以得到类似如下的数据:
观察小结
由此看出 UpdatePanel 之内的控件产生的事件不是传送的整个网页,而 UpdatePanel 之外的控件产生的事件传送的是整个网页。
更进一步
我们发现,在点击 btnIn、btnInToOut 时,我们获得的真正有用的数据只有很短的一个字符串,那为什么还有几百字节的传输量呢?通过 Fiddler 我们发现服务器端发送回来的数据不仅包括了我们需要的数据,还包括了整个 UpdatePanel 内部的数据,这的确是一件危险的事情,如果我们的 UpdatePanel 很大,那么 UpdatePanel 的确应该慎用。