2012-06-11 4 views
3

Я использую AppEngine with Restlet, чтобы обслуживать мои данные в приложении GWT в браузере как клиент. Издание Restlet-GWT использует сериализацию GWT-RPC в качестве транспортного формата под ним. Сериализация GWT-RPC основана на совместно используемом источнике между клиентом и сервером для сериализации/десериализации.После использования сервера браузер все еще использует кешированную версию

Теперь, после добавления нового свойства к одному из общих классов источников, де-сериализация начала неудачу. Сервер AppEngine обработал запрос правильно с ответом HTTP 200/OK и отправил правильно сериализованный объект. Клиент задыхался каждый раз.

Спустя некоторое время я выяснил, что браузер был , пытаясь десериализовать кешированную копию моего объекта (без недавно добавленного свойства), и поэтому де-сериализация в browswer не удалась.

Теперь вопрос: Почему браузер использует кешированную копию, если сервер в любом случае попал?

ИМО, это побеждает цель/преимущества кеширования, ресурсы сервера и сети потребляются, а свежий результат не используется? В случае, если browswer решит использовать кешированную копию, я бы не ожидал, что вы туда не поедете на сервер.

thx!

+0

Я бегу в этом вопросе при развертывании новой версии для Appengine тоже, каковы мои возможности, чтобы предотвратить это? – koma

+0

и да, я остановил/запустил приложение, перекомпилировал и все ... – koma

ответ

1

Ваш браузер поддерживает javascript, скомпилированный GWT для вашего приложения в кеше.

Простое решение, сделайте небольшое обновление своей страницы пару раз (ctrl + F5 или cmd + shift + R).

Если вы хотите, чтобы предотвратить это, см this question

+0

так что браузер кэширует скомпилированный javascript, а не полезную нагрузку на запрос XHR? Это звучит как правильное объяснение! – koma