优化网站设计(三十五):避免将img的src属性设置为空白
前言
网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。
作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考 Best Practices for Speeding Up Your Web Site (http://developer.yahoo.com/performance/rules.html),同时,他们还发布了一个相应的测试工具Yslow http://developer.yahoo.com/yslow/
我强烈推荐所有的网站开发人员都应该学习这些最佳实践,并结合自己的实际项目情况进行应用。 接下来的一段时间,我将结合ASP.NET这个开发平台,针对这些原则,通过一个系列文章的形式,做些讲解和演绎,以帮助大家更好地理解这些原则,并且更好地使用他们。
准备工作
为了跟随我进行后续的学习,你需要准备如下的开发环境和工具
- Google Chrome 或者firefox ,并且安装 Yslow 这个扩展组件.请注意,这个组件是雅虎提供的,但目前没有针对IE的版本。
- https://chrome.google.com/webstore/detail/yslow/ninejjcohidippngpapiilnmkgllmakh
- https://addons.mozilla.org/en-US/firefox/addon/yslow/
- 你应该对这些浏览器的开发人员工具有所了解,你可以通过按下F12键调出这个工具。
- Visaul Studio 2010 SP1 或更高版本,推荐使用Visual Studio 2012
- 你需要对ASP.NET的开发基本流程和核心技术有相当的了解,本系列文章很难对基础知识做普及。
本文要讨论的话题
这一篇我和大家讨论的是第三十五条原则:Avoid Empty Image src (避免将img的src属性设置为空白)。
雅虎的团队指出,如果你将img的src留空,可能你的本意是暂时不要显示任何图片,但在不同的浏览器其实还是会有一些额外的请求发生。例如
- Internet Explorer makes a request to the directory in which the page is located.
- Safari and Chrome make a request to the actual page itself.
- Firefox 3 and earlier versions behave the same as Safari and Chrome, but version 3.5 addressed this issue[bug 444931] and no longer sends a request.
- Opera does not do anything when an empty image src is encountered.
据我的观察,现在的这些浏览器都不再发送额外的请求了。这也算是浏览器自身的改进吧,为什么要对一个空白的img去发起额外的请求呢?
但既然以前早期的版本有可能发生这样的事情,如果你无法确保你的用户都使用最新的现代浏览器,那么请简单地遵守这条原则:总是给img的src设置值,而且是一个合法的值。
作为开发者,我理解有的时候,你想将src留空的原因在于,页面加载的时候,你想快速完全加载,这些图片你可能想后期再根据实际情况再加载。如果真的是这样,你应该参考一下另外一个讨论:优化网站设计(十七):延迟或按需加载内容。
或者很简单地,你可以将初始图片设置为一个很小的默认图片(这个图片设置永不过期),而不是留空。