#javascript #ajax #google-app-engine
#javascript #ajax #google-app-engine
Вопрос:
Развернув одно из моих приложений в Google App Engine, я столкнулся с проблемой, когда первый AJAX-запрос всегда завершается неудачей в браузерах на базе IE, и, как ни странно, он воспроизводим. Впрочем, с firefox все в порядке.
Рассматриваемый URL: http://linussudoku.appspot.com /
Когда я просматриваю журналы, это то, что я вижу каждый раз, когда запрос завершается с ошибкой,
org.apache.struts.chain.commands.Выполнение AbstractExceptionHandler: необработанное исключение
com.google.apphosting.api.DeadlineExceededException: этот запрос (0000000000000000) начался в 2011/10/30 06:43:37.173 UTC и все еще выполнялся в 2011/10/30 06:44:36.654 UTC.
в java.util.ArrayList.size(ArrayList.java:197)
Значит, виновником все время была та же строка моего кода, в которой я вызываю метод size? Если да, то почему это происходит только с 1-м запросом? Я бы приветствовал любое понимание того, почему это происходит.
Примечание: поведение таково, что в IE мой первый AJAX-запрос завершается неудачей, последующие запросы занимают некоторое время. Но вместо этого, если я обновился после сбоя первого запроса, все работает очень нормально. Firefox вообще не вызывает никаких проблем.
Комментарии:
1. Похоже, что проблема связана с серверной частью, а не с javascript / ajax. Вы кэшируете решение, а затем выполняете постобработку результата (где он изначально зависает)? Это объясняет быстрое последующее время отклика для данного решения.
2. Поскольку проблема возникает в вашем коде, мы не можем предоставить какую-либо помощь, не увидев указанный код.
3. @KevinP, хм, нет, я не кэширую решение и не «обрабатываю» результат. Но почему я сталкиваюсь с этим только с IE, а не с firefox? В качестве обходного пути я решил сделать AJAX-запрос с образцом ввода всякий раз, когда клиент посещает страницу с помощью IE, что, конечно, приведет к сбою. Я не уведомляю пользователя об этом, поэтому его запросы (отправляют 1-й фиктивный запрос) будут работать нормально.
4. @NickJohnson, я сомневаюсь, что эта проблема возникает в моем коде, упомянув несоответствия браузера. И я предполагаю, что это происходит потому, что движку приложений потребуется некоторое время для инициализации моих объектов, но он не завершится, поскольку время ожидания установлено равным min. или так. Просматривая журналы, все мои неудачные запросы заняли ровно 59 секунд и завершились ошибкой в той же строке.
5. @mystarrocks Проблема определенно в вашем коде — в вставленном вами журнале указано, что ваш код все еще выполнялся, когда он достиг крайнего срока. Невозможно сказать вам, что это такое, не видя рассматриваемый код.