9th,三月,2010

YUI3动态加载文件缓存问题

YUI动态加载原理:“​​在​​页​​面​DOMReady​后​​,​​利​​用​JavaScript​把​​指​​定​​文​​件​​路​​径​​的​script​ 和​link​元​​素​​插​​入​​到​​页​​面​​中​​,​​然​​后​​判​​断​​其​​加​​载​​状​​态​​再​​进​​行​​继​​续​​操​​作​​。​​”

秦歌的文章里提到《用YUI3.0.0加载无缓存的JavaScript文件》,我感觉这个方案挺实用的,记下了。
原理:利用随机时间数避免【utf-8.js】这个文件被浏览器缓存
测试代码如下:

<script src="http://yui.yahooapis.com/3.0.0/build/yui/yui-min.js"></script>
<script>
YUI({
  charset : 'utf-8',//秦歌建议script元素的charset属性应该位于src属性前,可防止弹出bug
  modules : {
    'utf8js' : {fullpath:'utf-8.js?' + new Date + '.js'}
  }
}).use('utf8js',function(Y,result){
  if(!result.success){
    alert('load failure');
  }else{
    alert('load success');
  }
});
</script>

demo网址:http://dancewithnet.com/lab/2009/yui-loader-bug-in-ie/random-in-gb2312.html

加缓存参数比较有意思的是:

    ​your​-​script​.​js​?​random​=​12345​ ​​;​​/​​/​​ ​This​ ​may​ ​not​ ​work​ ​on​ ​IE​.
    ​your​-​script​.​js​?​random​=​12345​.​js​ ​​/​​/​​ ​This​ ​works​,​​ ​haha​.

1 条评论 »

  1. simaopig [2010年03月9日 @ 18:28] says

    咦?为何加random=12345 在IE会 not work ??

这篇文章上的评论的 RSS feed TrackBack URL

留下评论