日期:2014-05-17  浏览次数:20713 次

用javascript预加载图片、css、js的方法研究

用javascript预加载图片、css、js的方法研究

预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片、css、js这些静态文件可以被缓存),如果用户访问的页面里面的css、js、图片被预加载了,用户打开页面的速度会快很多,提升用户体验。在用到一些大图片展示的时候,预加载大图是很不错的方法,图片更快的被呈现给用户。不多说了,作为一个前端攻城师都懂的,下面分享我做的测试和得到的结果。

先说需要知道的服务器返回的status code:
status-code: 200 - 客户端请求成功
status-code: 304 - 文件已经在浏览器缓存中,服务器告诉客户端,原来缓冲的文档还可以继续使用。
本文测试判断文件被是否被缓存,用的就是判断是否返回304.

下面针对预加载的几个方法,在不同的浏览器下加载img/js/css做个测试,主要包括new Image()、object、iframe。以下加载测试的js、css、图片文件,是从几个门户网站找的(为啥找几个?是为了尽可能滴测试到特殊的情况,测试中还真遇到了)。

1、测试用new Image()预加载

1.1、new Image()加载

  1. newImage().src ='http://img02.taobaocdn.com/tps/i2/T1iQhUXnxpXXXXXXXX-171-48.png';//淘宝
  2. newImage().src ='http://static.paipaiimg.com/module/logo/logo_2011_02_22.png';//拍拍
  3. newImage().src ='http://co.youa.baidu.com/picture/services/images/logo.png';//有啊
  4. newImage().src ='http://img1.t.sinajs.cn/t35/style/images/common/header/logoNew_nocache.png';//新浪*/

然后再把图片添加到页面内:<img src="xxx" />

加载图片没啥好说的,IE6-9/CM/FF/OP/都返回304,预加载成功。

1.2、测试用new Image()加载css

  1. newImage().src ='http://a.tbcdn.cn/p/global/1.0/global-min.css';//淘宝(1)