我正在解决一个ASP web应用程序的问题,这个问题只发生在Internet中,而不是在兼容性视图中。从兼容性的角度来看,它工作得很好,在Firefox和Chrome中也是如此。页面的加载速度似乎很慢,但是在developer tools的“网络”选项卡中,我可以看到它正在执行数千个针对特定图像文件的GET请求,这些请求都是成功返回的。我无法想象为什么会发生这种事。
这是一个网络标签的截图,这样你就可以明白我的意思了。在本例中,IE成功地为同一个文件发出了6000多个GET请求。

编辑:,因为@pherris在注释中被请求,所以在CSS中将图像作为background-image属性引用为按钮(background-image: url(../images/btn_background.gif);)。
编辑2:,所以我知道了请求的数量来自哪里。该页正在显示包含2054行数据的网格。每行包含三个按钮和实际数据。每个按钮都使用上面的CSS来加载btn_background.gif映像。因此,从2054 * 3 = 6,162开始,这就解释了对该图像的6,000个请求。然而,为什么IE会请求相同的文件多次而不是简单地请求它一次?只有在不使用兼容性视图的IE中才会发生这种情况。它在Chrome和Firefox中运行得很好。
发布于 2014-10-29 15:11:14
我不确定回答自己问题的礼仪,但我找到了问题的原因。按钮上还有另一个CSS属性,导致请求发生:
/* The -ms-filter fits the image for IE8. */
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/btn_background.gif', sizingMethod='scale')";我不熟悉-ms-filter,但我做了一些googling,这是一个不推荐的MS特定的CSS属性。我找到它是因为我正在查找对btn_background.gif的所有引用,这样我就可以像@pherris建议的那样用数据URI方案替换它们,并且我看到它也在这个属性中被引用。我把它注释掉了,很确定,这个页面现在工作得很好。我甚至启动了一个带有IE8的VM,并在那里进行了测试,那里也没有任何问题,尽管注释表明这个属性是用于IE8兼容性的。
发布于 2014-10-29 14:13:41
您可以查看与图像一起发送的头文件,并对您正在使用的特定IE版本进行故障排除,但在这一点上,我建议base64在您的CSS中对图像进行编码。这甚至可以避免一个http请求(对于图像),并且您可以完全在客户端上进行更改。
CSS将更改为类似的内容(其中字符串是编码的图像):
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vFGNjQ4NjJBOTExMUUyOTRGRTk2MjkwRUNBMjZDNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENTFGNjQ4NzJBOTExMUUyOTRGRTk2MjkwRUNBMjZDNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuT868wAAABESURBVHja7M4xEQAwDAOxuPw5uwi6ZeigB/CntJ2lkmytznwZFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYW1qsrwABYuwNkimqm3gAAAABJRU5ErkJggg==);要对图像进行base64编码,可以使用在线转换工具:
https://stackoverflow.com/questions/26618481
复制相似问题