最新评论
demix 2010-12-20 14:51
@Gray Zhang
原来如此
找到了这个,都可以看看
http://www.browserscope.org/?category=network&v=top
显示firefox都是支持的。 还能这么智能?呵呵
prefetch不支持script吧?
script标签加载会执行啦,不是我们的目的。
Gray Zhang 2010-12-20 13:48
@demix
没错,object和iframe几乎是一样的,这是一个很让人头疼的问题
就如我在博客中所说的,如果不判断浏览器,想要一个完美的预加载的方案,几乎是不可能的
在放弃Firefox的情况下,用script标签就可以加载多数资源,因此比较好的就是头部写个link prefetch,然后再用script标签加载
你实测的Firefox4.0不支持Link Prefetch其实是个半对半错的答案,我这测试的结果是“Firefox会根据当前网络条件决定是否Prefetch”,比如部分无线网络,会被Firefox认为是“按流量付费的网络”,因此主动禁用了Prefetch,智能过头也很悲哀
demix 2010-12-20 13:44
@Gray Zhang
nice 经过测试 ie确实发请求,不过不执行。
关于object,那按照现在的意见是表现就跟iframe一致咯,我大致测了几个问题表现都一致。所以二者的选择应该是差不多的。这方面你有什么建议?
Gray Zhang 2010-12-18 14:01
@demix
你说得没错,所谓的预加载,最重要的是不能让资源执行
iframe不会执行单纯的javascript,这一点上iframe就相当于个浏览器窗口,如果接收到的内容是text/html、image/*等,是会解析和执行的,对于text/javascript,则只请求不执行
script标签在Firefox和Chrome下,当type不识别时不发生任何请求
object标签非常诡异,大致是这样的:
1、当object的type是浏览器不认识的,比如boost/prefetch这样子,会要求你安装插件
2、当object的type是text/plain的时候,Firefox和Chrome里此时object相当于一个iframe,会解析和执行html,你可以尝试用object加载一个html文件,该文件里放个script做alert就能重现问题
demix 2010-12-18 11:54
@Gray Zhang
谢谢指漏,第一个问题由于我现在手头没有IE浏览器。。。周一的时候再测测。
第二个问题我也在那篇文章回复。
还请大家放心,这两篇文章都是翻译的外国牛人的文章。我也是都做过测试的。方案应该是没有问题的。
demix 2010-12-18 11:54
@Gray Zhang
Hi 谢谢意见。
首先必须说明的是,这篇文章讲的主要如何加载资源而不会让JS,CSS文件执行。这个是先决条件。
你的方案里,使用iframe的话,其实还是会导致脚本执行,占用渲染线程。
"如果可以判断浏览器,针对Firefox使用Link Prefetch,针对IE使用img标签,其他浏览器使用script标签算是一种较为完美的解决方案。"
首先我测试了一下firefox 4b7,不支持link prefetch,汗死。。。
其次其他浏览器使用script标签,就会有script脚本执行占用线程,内存增多等问题。
至于你提到的object标签会导致不发请求提示安装插件等问题,在我的chrome 和 firefox 上都没有发现。
你的博客内容组织的很清晰,向你学习 :)
demix 2010-12-18 11:13
@ruolinzhanyuan
hi 我用你的代码测试了一下,是能够运行的。是不是本地control.js的问题?麻烦描述一下详细的环境 :)
demix 2010-12-18 11:10
@Goodspeed
首先这个优化的东东是跟JS无关的,这是浏览器本身解析的问题,或者也是一种考虑了很多因素的最优方案。浏览器本身还是很牛逼的,一个几十M的程序,交互复杂,功能丰富,平台兼容。我觉得浏览器一定是以后application的基础平台,而不再是现在的os了。我们只是为了让上面的application运转的更好。也跟优化windows程序是一样的。
Gray Zhang 2010-12-17 22:01
TO 楼主:
已经在你[css,javascript的预加载]一文中回复了,也为了让看这篇文章的园友有个严谨的认识,在这里在发一下,如果打扰到你,先表达一下歉意
1、script标签设置无法识别的type,在部分浏览器(IE)下是会请求资源的,因此你“浏览器是识别不了的,也不会去加载”这句存在一点问题
2、你的“css,javascript的预加载”一文中提供的预加载的方法是有漏洞的
Gray Zhang 2010-12-17 21:56
从严谨的角度来说,你的预加载方式是有问题的,具体可以看我的博客
http://www.otakustay.com/prefetch-resource/
object标签用于加载资源会引起不少的问题,而且都是比较严重的问题,最好不要推荐
ruolinzhanyuan 2010-12-17 18:12
楼主,我试验了好多,但都没成功哦。
[code=html]
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<SCRIPT type=text/javascript>
// Record the time at the top of the page.
var t_top = Number(new Date());
</SCRIPT>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
<SCRIPT type=text/javascript>
var cjsscript = document.createElement('script');
cjsscript.src = "/js/control.js";
var cjssib = document.getElementsByTagName('script')[0];
cjssib.parentNode.insertBefore(cjsscript, cjssib);
</SCRIPT>
<SCRIPT type="text/cjs">alert('a');</SCRIPT>
</body>
</html>
[/code]