我一直想知道是否有正确的方法:当我使用AJAX动态加载脚本时,我可以选择将url传回服务器上的脚本,然后运行:{ {1}}或者只是传回脚本本身。
我采用传递内容脚本本身的方法,因为我认为我只进行一次往返而不是两次。另外因为我想传回一些css或其他资产。我注意到facebook会将网址传递给CDN资源,所以我想知道我的方法是否有一些我忽视的后果。
谢谢! 马特
答案 0 :(得分:2)
当你是Facebook时,你正在寻找一些相当独特的流量模式。发回20KB的脚本与从动态服务器发送30个字符可以转化为这些服务器上的更多负载。此外,他们可能无法快速提供大量内容。
相比之下,CDN服务器是美化的静态代理,专为速度和规模而设计。所以从facebook的角度来看,额外的往返是有意义的,因为它仍然可以提高整体页面速度,并且它肯定会改善他们的服务器流量模式。
现在回到你身边。如果您要从与站点其余部分相同的服务器加载脚本,则此方法没有意义。如果你也可以访问CDN,那么你必须使用各种关于你的用户的假设(延迟,位置),关于你的站点的事实(脚本的大小,脚本加载的时间)来进行数学计算,并比较让你的主服务器提供这些脚本,而不是额外的往返和你的CDN服务器分发这些脚本。
关于往返的另外一个想法:如果我是Facebook,我可能会在页面实际需要加载脚本之前提前分发这些CDN URL。理想情况下,我会依赖另一个请求来隐藏那些额外的数据。这使得额外的往返问题大多没有实际意义。
答案 1 :(得分:0)
嗯,我很确定AJAX存在一些跨域安全问题,这意味着如果你试图从外部CDN动态加载脚本的内容,你需要解决这个问题。