有一个页面是这样一种情况,当整个页面加载完了,然后会发出一次异步请求,完成 列表数据的载入和显示。不过这几天,明显感觉到列表加载的速度太慢了,老是在页面显示完整了以后好几秒才开始进行异步的请求。通过用firebug分析, 发现在页面加载完毕后,在异步请求发出之前,竟然又重复发出了三个对当前页面的请求。也就是说,在列表加载之前,竟然重复加载了当前页面三次。那么,这三 次额外的请求是从哪来的呢?我把页面代码从最后一部分开始逐步网上删除,看看那三次请求是否依然存在。经过若干次的尝试,最后将问题定位了有三个img标 签的地方。其代码都是类似于这样的格式:
按照常理来推测,src表示图片的地址,地址为空就应该不发出任何的图片的请求了,但事实却出乎我们的意料,经过在浏览器下的测试就可以发现问题了。
随便写个html文件,在其中加入的代码,用firebug检测,就可以发现,多出了一次对当前页面的请求,如下图:
而如果是在ie里边,则会访问当前页面所在的目录,比如,如果当前页面是http://domain.com/test.html,那么就会访问http://domain.com/一次,这是和firefox有所区别的地方。
事实上,不仅仅是img标签存在上述的问题,其他一些标签也会有类似的表现,详见《关于img src值为空时,2次请求问题的深入调研》一文。
对于img标签src=“”是会自动请求当前页面一次的解决方案实际上也非常简单,只要去掉src属性即可,即写成的形式。
把这个问题解决了以后,这个页面大概能提高两三秒的响应速度,使用的感觉就非常流畅了。这也提醒我们,做开发有时候还真不能想当然。