Facebook Canvas App部分加载

时间:2012-08-15 11:55:08

标签: facebook heroku facebook-page facebook-canvas

我有一个页面FB Canvas应用程序通过iframe调用我在Heroku上托管的页面。

直接通过我的heroku链接加载页面没有问题。但是,当我尝试通过画布应用程序加载页面时,它有时只加载一半的HTML。我需要垃圾邮件刷新,以便整个页面在应用程序中正确呈现。

我已针对W3C验证程序检查了我的页面,并且没有语法问题。

Heroku刚慢吗?当我直接访问网址时,它加载速度非常快。

什么可能导致我的网页加载到中途停止?

2 个答案:

答案 0 :(得分:2)

我在使用Heroku时遇到了这个问题,但仅限于我和同事分别与该应用作为所有者和测试人员相关联,其他帐户可以正常加载页面。

通过pagekite通过24/3 ADSL测试同一个应用程序,效果非常好。

HTTPS或HTTP似乎并不重要。我会说这是一个Heroku问题。


编辑:我不确定发生了什么,但问题不再存在了。我无法想到我所做的任何修复问题的事情,但我在问题消失之前和之后都做了很多事情,例如在数据库中缓存远程数据等等。我不能确定任何有用的东西,或者它是Heroku基础设施中的一些隐藏问题。

我联系Heroku了解这个问题,当他们回到我身边时,问题突然消失了。

我已答应回复日志(应用程序和客户端HTTP / TCP日志),如果您遇到此问题并可以重现它,请捕获日志并将其发送到Heroku support。使用wireshark可以捕获TCP流量,并且可以通过heroku logs获取Heroku应用程序日志。

答案 1 :(得分:1)

我也有这个问题。我认为这与此问题中的问题有关:iFrame showing up Blank in Facebook Canvas App

如果是使用Flask的Python应用程序,请尝试以下代码: 来自werkzeug.wsgi import LimitedStream

class StreamConsumingMiddleware(object):

    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        stream = LimitedStream(environ['wsgi.input'],
                               int(environ['CONTENT_LENGTH'] or 0))
        environ['wsgi.input'] = stream
        app_iter = self.app(environ, start_response)
        try:
            stream.exhaust()
            for event in app_iter:
                yield event
        finally:
            if hasattr(app_iter, 'close'):
                app_iter.close()

使用此行激活它:

app.wsgi_app = StreamConsumingMiddleware(app.wsgi_app)

来源:http://flask.pocoo.org/snippets/47/