Кэширование на стороне клиента в насыщенных интернет-приложениях - PullRequest
0 голосов
/ 29 января 2009

Я начинаю выходить на незнакомую территорию в отношении улучшения производительности и нашего RIA (Rich Internet Application), построенного на GWT. Для тех, кто не знаком с GWT, по сути, при развертывании это просто чистый JavaScript. Мы взаимодействуем со стороной сервера с помощью веб-службы XML в стиле REST через XMLHttpRequest.

Наш XML разбит на объекты JavaScript и используется в приложении для представления модели данных, лежащей в основе интерфейса. Когда происходят изменения, модель обновляется и направляется обратно в XML и отправляется обратно на сервер.

Я узнал, что главное правило производительности (с точки зрения взаимодействия с пользователем) - делать как можно меньше запросов. Очевидно, это поднимает возможность кеширования. Кэширование отлично подходит для статических данных, но в многопользовательской системе, где данные на сервере могут изменяться, все становится непросто. Кроме того, использование запросов «Last-Modified» и «If-Modified-Since» недостаточно, поскольку мы хотели бы полностью избежать ненужных запросов.

Я пытаюсь выяснить, подходит ли нам кэширование данных в браузере, прежде чем исследовать подходы. Я надеюсь, что кто-то прошел этот путь раньше. Я ищу похожие подходы, извлеченные уроки, вещи, которых следует избегать и т. Д.

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

1 Ответ

0 голосов
/ 29 января 2009

Для GWT, если производительность так важна для вас, вы получаете лучшую производительность, отправляя все необходимые данные в одном запросе, вместо того, чтобы запрашивать несколько небольших данных. Я бы рекомендовал не использовать кэширование данных на стороне клиента, поскольку существует множество проблем, таких как синхронизация данных с базой данных.

Кроме того, у вас уже есть хорошее преимущество с GWT перед традиционными html-приложениями. Если вы не имеете дело со специальными данными (например: не устаревают слишком быстро - подразумевает в основном запросы на чтение), я обнаружил, что нет особой необходимости в кэшировании. Кэширование на уровне сервисов лучше выполнять, поскольку большую часть времени должно занимать обработка на стороне сервера.

Если вы можете предоставить более подробную информацию о характере приложения, возможно, можно сделать некоторые другие выводы.

...