动态加载:将url传递给脚本或传回脚本本身?

时间:2011-01-30 22:57:53

标签: javascript performance lazy-loading

我一直想知道是否有正确的方法:当我使用AJAX动态加载脚本时,我可以选择将url传回服务器上的脚本,然后运行:{ {1}}或者只是传回脚本本身。

我采用传递内容脚本本身的方法,因为我认为我只进行一次往返而不是两次。另外因为我想传回一些css或其他资产。我注意到facebook会将网址传递给CDN资源,所以我想知道我的方法是否有一些我忽视的后果。

谢谢! 马特

2 个答案:

答案 0 :(得分:2)

当你是Facebook时,你正在寻找一些相当独特的流量模式。发回20KB的脚本与从动态服务器发送30个字符可以转化为这些服务器上的更多负载。此外,他们可能无法快速提供大量内容。

相比之下,CDN服务器是美化的静态代理,专为速度和规模而设计。所以从facebook的角度来看,额外的往返是有意义的,因为它仍然可以提高整体页面速度,并且它肯定会改善他们的服务器流量模式。

现在回到你身边。如果您要从与站点其余部分相同的服务器加载脚本,则此方法没有意义。如果你也可以访问CDN,那么你必须使用各种关于你的用户的假设(延迟,位置),关于你的站点的事实(脚本的大小,脚本加载的时间)来进行数学计算,并比较让你的主服务器提供这些脚本,而不是额外的往返和你的CDN服务器分发这些脚本。

关于往返的另外一个想法:如果我是Facebook,我可能会在页面实际需要加载脚本之前提前分发这些CDN URL。理想情况下,我会依赖另一个请求来隐藏那些额外的数据。这使得额外的往返问题大多没有实际意义。

答案 1 :(得分:0)

嗯,我很确定AJAX存在一些跨域安全问题,这意味着如果你试图从外部CDN动态加载脚本的内容,你需要解决这个问题。