Facebook / Google可以导致网站无法加载吗?

时间:2011-11-07 12:29:19

标签: facebook web facebook-social-plugins

这可能听起来像个愚蠢的问题,但昨天我们的网站都没有加载。与托管公司联系后,他们说了

  

在这种情况下,您的网站似乎正在等待来自外部组件/网站的响应(查看您的代码,我一眼就看到对Facebook,Google和在线应用的引用)。

我们以前从来没有遇到过这个问题,网站几个月来一直在使用社交插件,所以我想知道昨天是否还有其他人遇到过这个问题?

由于

2 个答案:

答案 0 :(得分:2)

在不知道细节的情况下,我可以告诉您,当您通过<script></script>标记加载Javascript时,浏览器会等待请求完成后再继续。因此,如果您在<head></head>部分中加载JS文件,则在成功加载之前不会在屏幕上呈现任何内容。这里的404会杀了你,也会减慢连接速度。

如果您有内联JS,最好将它放在<body></body>部分的最底部,这样它就不会中断浏览器渲染。如果您的代码架构允许,请在<head></head>部分为JS文件执行此操作。

答案 1 :(得分:0)

只是在黑暗中随机刺伤,但我想知道这是否与Facebook上的匿名威胁有任何关系。我之前使用过Twitter插件时遇到过类似的问题,插件可能需要几秒钟的时间才能恢复推文,而其他页面则在Twitter正在做的时候挂起。

为了确保不再发生这种情况,如果它是可行的解决方案,您可以在页面加载时调用社交插件。在一天结束时,您是否希望页面加载时间依赖于您无法控制的其他服务?

编辑:@Jason McClellan的回答是现货。我相信你的答案的组合可以解决你的问题。如果我不控制资源,我永远不会在脚头包含脚本!这可能无限期地挂起你的页面。

edit2:不知道为什么我的评分很低,只是试图把它与我的经历联系起来。我对Facebook插件并不是很有经验,但是当我注意到我的twitter插件出现问题时,我确实做了@Jason McClellan所说的答案,以确保在脚本被请求之前所有的html都被渲染,然后确保页面可以在有或没有Twitter内容的情况下正确显示,因此用户体验不依赖于外部资源。我正在使用的twitter插件有一个启动功能,我不得不调用它来启动脚本。调用它的最简单方法是:

    <body onload='init()'>

如果你有另一个脚本,你正在加载页面,你可以使用

的内容
    window.onload = function() {
        init();
    }

来自您的外部脚本。

抱歉,我无法给出Facebook插件的具体答案。也许在Facebook插件中有更多经验的人可以在评论中详细说明:D

edit3:这个基于社区的工具也表明,当你经历过一段时间看到一些facebook停机时间的人很安静 - Facebook status at DownRightNow

edit4:我没有“Privelages”来评论Jason的q,因为我在这里很新...但是为了回答你的评论,你所描述的头脑中的东西是在facebook标志中加载的内容 - 语言(fbml),所以像html这样的标记语言,但是为你准备好使用facebook api。所以你可以这样做:

    <fb:comments xid="titans_comments" canpost="true" candelete="false" returnurl="http://apps.facebook.com/myapp/titans/">
    <fb:title>Talk about the Titans</fb:title>
    </fb:comments>

直接在页面中添加一些评论 - fbml developers guide

你的评论还表明你没有包含一个脚本供你的页面加载所以它使我们以前的答案不那么重要,你需要在你的页面中使用fbml之前在脑袋中包含fbml的东西所以不要移动它:D

但@jason McClellan的答案是每个人都应该对他们的项目做的事情(除非有理由不这样做)因为它允许用户在浏览器触发脚本请求之前看到某些内容。在一天结束时,我们正在玩这个游戏,为我们的用户制作漂亮的东西!

祝你好运