我有一个网站(http://dev2.liquor.com) 当我删除合作伙伴提供的广告商和跟踪脚本时,加载速度非常快。当然,我们需要将页面加载时间从 6 秒缩短到 1 秒,我发现这 100% 是我们用于合作伙伴跟踪、广告等的所有外部 js 文件。
我一直在绞尽脑汁寻找其他方法来加载/压缩/提供用户需要下载的大量 js。我可以轻松压缩/缩小我的,但不在我们服务器上的其他人的 js 却很难做到这一点。
我能做的最好的就是在 YSlow 上获得一个 C,他们给我的每条建议都与我愚蠢的跟踪 js 脚本有关!
我认为主要问题是跟踪(http://pastebin.com/faMDGrrs) 导致网站加载时间过长。您有办法解决这个问题吗?
我是否可以在我的网站中管理第三方脚本?
任何帮助将不胜感激。
答案1
下面是我编写的一些客户端 JS(基于 Google Analytics 异步跟踪代码片段),它允许您异步加载外部 Javascript:
<script type="text/javascript">
(function() {
var scripts = new Array(
'external.domain.com/script1.js',
'external.domain.com/script2.js',
'../script1.js',
'./script2.js',
'/script3.js'
);
if ( scripts.length )
{
for ( var i = 0; i < scripts.length; i++ )
{
var asynchronous = document.createElement('script');
asynchronous.type = 'text/javascript';
asynchronous.async = true;
if (
scripts[i].substring(0, 1) != '/' &&
scripts[i].substring(0, 1) != '.'
) {
// assume external domain (enforce protocol)
asynchronous.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + scripts[i];
} else {
// assume relative URI
asynchronous.src = scripts[i];
}
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(asynchronous, s);
}
}
})();
</script>
答案2
将第三方脚本放入iframe
可能是一种替代方案。
常识是 iframe 的成本很高(就加载而言),但如果它的成本低于加载第三方元素的成本,您可以尝试一下。
你可能已经做了大部分描述的事情这里,但无论如何它都是一个很好的资源。