现在我正在开发的一个大型应用程序可以单独下载所有小图像,通常是按需下载。大约1000个图像,范围从20字节到40千字节。我试图通过将ClientBundle用于较小的最常用的产品来确定是否会有任何客户端性能改进。 我现在正在为这一方提出“多连接高延迟”问题,只关注javascript / css /浏览器性能。 一些图像直接在CSS中使用。通过“spriting”他们与正常使用相比,是否有任何性能改进? 一些图像被创建为新图像(url)。将它们保留为这种方式更好,将它们移动到CSS中并使用dinamically应用样式还是从ClientBundle加载? 某些操作会在图像上产生setURL。我已经看到使用ClientBundle可以完成相同的代码,它可能会为该图像设置dataURI。是否会提高性能还是以这种方式更快?
我特别谈论的是运行时间而不是启动时间,因为这是一个看到使用时间长的应用程序,所有图像可能会在前10分钟内缓存,所以往返不是问题(目前)
答案 0 :(得分:1)
简短回答不是真的(对于FF,铬,狩猎,歌剧)但有时对于IE(< 9)!!!
让我们看一下客户端捆绑包
客户端捆绑包将每个图像打包成一个...捆绑...这样您只需要一个http连接即可获得所有这些...并且下次加载应用程序时只需要一次新鲜度查找。 (而不是n次,n是你的小图片的数量......真的很浪费。)
很明显,客户端捆绑可以极大地改善您的应用加载时间。
运行时效果
有时候某个特定图像无法通过互联网下载或丢失。如果你建立1000个连接,那么出错的可能性会增加(无论多少)。 FF,Chrome,Safari,Opera只是将图像找不到徽标并继续运行。 IE< 9然而,将继续尝试获取那些特定图像,使用其允许的两个连接。这确实会影响IE中的性能。
除此之外,如果您继续异步加载新的小部件并且他们最终会在稍后阶段下载图像,则会有一些性能提升。
洁