2011-02-03 77 views
3

我已将Facebook按钮添加到我的网站。加载下面的jscript时会有延迟,并且页面的其余部分在完成之前不会加载。另外,如果我用我的防火墙封锁了Facebook,放弃之前会有很长的延迟,然后显示我的其余页面。我如何首先显示我的页面,然后像按钮一样? (我这样做,看看如果Facebook有问题会发生什么。)另外,当我加载不同的页面时,Facebook的按钮不断重新加载(它显然缺席,直到重新加载--1/3秒。)按钮是在同一个地方在每一页上,在顶部的横幅上。其他图像不会重新加载 - 它们被缓存 - 并且在选择其他页面时它们显示为静态。有没有一种方法可以让脚本缓存?如何让Facebook像按钮延迟我的网站加载?

下面的代码:

<div style="position: absolute; top:20px; right:85px; width:70px; height:25px"> 
    <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script> 
    <fb:like href="http://www.facebook.com/pages/somepage/somenum" layout="box_count" show_faces="false" width="50"></fb:like> 
</div> 

感谢

更新: 我发现装载all.js异步验证码:

“另一种方式是异步加载所以它不会阻止加载您网页的其他元素:“

<div id="fb-root"></div><script>window.fbAsyncInit = function() { 
FB.init({appId: 'your app id', status: true, cookie: true, 
xfbml: true}); 
}; 
(function() { 
var e = document.createElement('script'); e.async = true; 
e.src = document.location.protocol + 
'//connect.facebook.net/en_US/all.js'; 
document.getElementById('fb-root').appendChild(e); 
}()); 
</script> 

但是什么是“您的应用ID?”代码从这里开始http://www.mohammedarif.com/?p=180

回答

1

您可以像我在问题更新中描述的那样异步加载。你从facebook上的“创建应用程序”获得一个应用程序ID。 (谷歌它...)

1

元素加载发生在代码的上下。如果代码之上加载了一个非常大的资源,它将延迟加载总量。 如果您想在之前显示您的页面,请将此按钮放在代码的末尾。

+0

你知道如何让浏览器保持在JScript中缓存,所以它不会不断重新加载? – harold 2011-02-03 15:30:37

+0

嗯,你回答的问题是我问的问题。它会写一个新的问题来解决另一个问题。 – harold 2011-02-03 15:43:07

1

哈罗德,你从我的网站代码,得益于看到它在这里再次:)

你问两件事情,一个是FB应用程序ID,另一个是JavaScript的缓存。

希望,你已经有办法获得App ID,让我们来谈谈下一点。

在静态资源(JavaScript/CSS)的HTTP标头中设置过期日期或最大使用期限指示浏览器从本地磁盘加载之前下载的资源,而不是通过网络加载。

在.htaccess文件

AddOutputFilter DEFLATE css js 
ExpiresActive On 
ExpiresByType application/x-javascript A2592000 

您可以在http://developer.yahoo.com/performance/rules.html

获得有关网站性能优化的更多建议希望它可以帮助