Приложение Facebook Canvas загружается частично

У меня есть одностраничное приложение FB Canvas, которое через iframe вызывает страницу, которую я разместил на Heroku.

Загрузка страницы напрямую через мою ссылку на героку работает без проблем. Однако, когда я пытаюсь загрузить страницу через приложение холста, иногда загружается только половина HTML. Мне нужно обновить спам, чтобы вся страница корректно отображалась в приложении.

Я проверил свою страницу с помощью валидатора W3C, и проблем с синтаксисом нет.

Heroku просто тормозит? Он загружается довольно быстро, когда я напрямую обращаюсь к URL-адресу.

Что могло привести к тому, что моя страница просто загрузилась наполовину и остановилась?


person super9    schedule 15.08.2012    source источник
comment
Проверьте HTTP-запросы, которые происходят с помощью Firebug или чего-то еще.   -  person CBroe    schedule 15.08.2012
comment
У меня как раз эта проблема, вы когда-нибудь находили решение? HTTP-запрос POST отображается как 200 в журналах heroku, но firebug / веб-консоль показывает запрос как HTTP 200 и failed.   -  person joar    schedule 09.01.2013
comment
Можете ли вы поделиться ссылкой на свое приложение, как ссылкой на холст, так и ссылкой на приложение   -  person Sahil Mittal    schedule 09.01.2013
comment
Проблема не ограничивается холстом, чистое приложение воспроизводит ошибку, за исключением некоторых запросов без видимой причины: приложения . facebook.com/statoil-jobs   -  person joar    schedule 09.01.2013
comment
Ну, его загрузка завершается на моем конце   -  person Sahil Mittal    schedule 09.01.2013
comment
@Sahil Сколько раз вы перезагружали приложение? Для меня он загружается полностью примерно в 1/10 случаев, обычно когда я не загружал страницу в последнее время.   -  person joar    schedule 09.01.2013
comment
Но для меня он каждый раз загружается полностью. Он показывает мне изображение и длинный список с последним li: Location Mölndal, Västra Götaland   -  person Sahil Mittal    schedule 09.01.2013
comment
позвольте нам продолжить обсуждение в чате   -  person joar    schedule 09.01.2013
comment
Вы пробовали другие браузеры? Это происходит во всех ваших браузерах?   -  person Goaler444    schedule 15.01.2013
comment
это в режиме песочницы, некоторые действительно странные вещи происходят в режиме песочницы   -  person Jessie Frazelle    schedule 16.01.2013
comment
Попробуйте flask.pocoo.org/snippets/47   -  person Adam    schedule 07.03.2013


Ответы (2)


У меня была эта проблема при использовании Heroku, но только для меня и моего коллеги, которые были связаны с приложением как владелец и тестировщик соответственно, другие учетные записи могли нормально загружать страницу.

Отлично работает тестирование того же приложения, размещенного через pagekite через 24/3 ADSL.

HTTPS или HTTP, похоже, не имеют значения. Я бы сказал, что это проблема Heroku.


РЕДАКТИРОВАТЬ: Я не уверен, что произошло, но проблемы больше нет. Я не могу придумать ничего из того, что я сделал, чтобы устранить проблему, но я сделал много вещей как до, так и после того, как проблема исчезла, например, кэширование удаленных данных в БД и многое другое. Я не могу быть уверен, что это помогло, или это какая-то скрытая проблема в инфраструктуре Heroku.

Я связался с Heroku по поводу этой проблемы, к тому времени, когда они вернулись ко мне, проблема внезапно исчезла.

Я обещал вернуться с журналами (журналами приложений и клиентов HTTP / TCP), если у вас есть эта проблема и вы можете ее воспроизвести, захватите журналы и отправьте их на Поддержка Heroku. Захват TCP-трафика можно выполнить с помощью wirehark, а журналы приложений Heroku доступны через heroku logs.

person joar    schedule 09.01.2013
comment
Когда я столкнулся с этой проблемой, у других пользователей, кроме владельца приложения, была такая же проблема. Я пришел к выводу, что это просто медленный ответ сервера. Я хостил его на героку, чего оно стоило. - person super9; 12.01.2013
comment
@ super9 Я тоже использую heroku для хостинга приложения, но мне не удалось воспроизвести его ни с одним пользователем, не подключенным к приложению. - person joar; 14.01.2013

У меня тоже была эта проблема. Я думаю, это связано с проблемой в этом вопросе: iFrame отображается пустым в приложении Facebook Canvas

Если это приложение Python, использующее Flask, попробуйте этот код: 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/

person Adam    schedule 06.03.2013