4

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

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

我已经根据 W3C 验证器检查了我的页面,并且没有语法问题。

Heroku只是慢了吗?当我直接访问 url 时,它加载得非常快。

什么可能导致我的页面加载到一半就停止了?

4

2 回答 2

2

我在使用 Heroku 时遇到了这个问题,但仅限于我和一位分别以所有者和测试者身份与应用程序关联的同事,其他帐户可以正常加载页面。

通过24/3 ADSL测试通过pagekite托管的相同应用程序非常有效。

HTTPS 或 HTTP 似乎无关紧要。我会说这是一个 Heroku 问题。


编辑:我不确定发生了什么,但问题不存在了。我想不出我做了什么可以解决这个问题,但是在问题消失之前和之后我做了很多事情,比如在数据库中缓存远程数据等等。我不能确定这有什么帮助,或者它是否是 Heroku 基础设施中的一些隐藏问题。

我就这个问题联系了 Heroku,当他们回复我时,这个问题突然消失了。

我已承诺返回日志(应用程序和客户端 HTTP/TCP 日志),如果您遇到此问题并且可以重现它,请捕获日志并将其发送给Heroku 支持。捕获 TCP 流量可以使用wireshark完成, Heroku 应用程序日志可以通过heroku logs.

于 2013-01-09T10:05:13.553 回答
1

我也有这个问题。我认为这与这个问题中的问题有关:iFrame 在 Facebook Canvas App 中显示空白

如果它是使用 Flask 的 Python 应用程序,请尝试以下代码: from 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/

于 2013-03-06T23:19:17.167 回答