У меня есть многостраничная форма, где конечный пользователь должен перейти на несколько экранов, где данные каждой страницы должны сохраняться в БД. Я ищу кэширование запроса и результатов, чтобы их можно было повторно использовать всякий раз, когда пользователь пытается перемещаться взад и вперед по экранам. Я пытаюсь включить спящий кэш второго уровня для этого и кешировать результаты и запрос. Это хорошая практика. Хотите отойти от этого подхода, если это не рекомендуется. Любые предложения?Спящий кэш второго уровня для многостраничной формы
ответ
Несколько предположений я делаю в отношении применения:
- Это выглядит как мастеров вид графического интерфейс веб-приложение, где пользователь деталь через многочисленные формы и пользователь может перемещаться вперед и назад при вводе данных ,
- Эти данные относятся только к пользователю.
Учитывая, что я предпочел бы хранить эти данные в объеме HttpSession
или Conversation
(например, session scoped action forms or @ConverstaionScoped
в зависимости от каркаса JSF/Struts ) etc rather than
зимуют второго уровня cache`.
Причина в том,
- Данные, специфичные для пользователя. Хранение данных, которые часто получают доступ (горячие данные) приложением в целом (не специфичным для пользователя) в кеше второго уровня, приводит к тому, что вы избегаете круглых поездок DB и повышения производительности.
- Поскольку данные, специфичные для пользователя,
HttpSession
- это лучшее место для хранения этих данных, так как каждый пользователь связан с его собственным объектомHttpSession
.
Я бы даже указал @ConversationScoped - мастер является точным прецедентом для этой области. –
@Flavius Я бы согласился с этим и хотел бы упомянуть об этом. –
Похоже, что какое-то приложение мастера, где вы захватываете детали через несколько форм, и пользователь может перемещаться туда и сюда при вводе данных. Как только пользователь завершит работу мастера и выполнит ввод данных, каковы шансы, что он вернется к тому же потоку мастера, чтобы обновить данные. И для меня это выглядит как однократное действие, и как только пользователь будет сделан, он не будет обновлять эти данные слишком часто (я имею в виду не каждые 10-15 минут или около того). Являются ли эти справедливые допущения? –