Каков наилучший способ кэширования часто меняющейся информации о статусе? - PullRequest
0 голосов
/ 16 февраля 2012

мои проекты имеют дело со структурой клиент / сервер, где клиенты периодически предоставляют информацию о состоянии через мыльный интерфейс.каждый запрос (1 на минуту) содержит сложную структуру данных статистики.

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

Есть ли лучшие методы кэширования в Grails?Синхронизированные списки - хорошее решение?

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Возможно, вы захотите взглянуть на встроенные методы кэширования: http://grails.org/doc/2.0.x/ref/Database%20Mapping/cache.html

Более подробный способ описан здесь: http://grails.org/doc/2.0.x/guide/single.html#caching

В зависимости от того, что вы хотитекэшировать, вы можете использовать Caching instances (для кэширования всего этого экземпляра) или Caching Queries (где вы кэшируете только результат одного запроса)

Как видно из второй ссылки, в конфигурациипозволяет использовать EhCache в качестве менеджера кэша.

0 голосов
/ 20 марта 2012

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

Есть ли лучшие методы кэширования в Grails? Синхронизированные списки - хорошее решение?

Может быть несколько слоев кеша в зависимости от того, с чем вы имеете дело. Однако я не верю, что сам Грааль сам кеширует что-либо в отношении вашего вопроса; Существуют настраиваемые параметры и плагины, которые позволяют вам кэшировать все: от запросов, классов домена, вызовов служб, фрагмента страницы, изображений, CSS и всего остального. Не говоря уже о вашей базе данных, и другие слои могут иметь свои собственные параметры кэширования.

Сказав, что я бы избегал использования ваших собственных методов кэширования, если только вы не имеете дело с очень специфической проблемой , когда вы знаете, что можете работать лучше, чем более общий подход, такой как кэш второго уровня (например, EHCache).

Если вы свернете свой собственный кэш , вы захотите знать обо всем остальном, что также может кэшировать тот же контент. Кэширование кешированного объекта в форме кешированного запроса сложно отладить.

Если производительность вас беспокоит, вы всегда должны делать некоторые тесты, прежде чем что-то менять. Чтобы действительно получить максимальную производительность из всего, что вам нужно, вы должны понимать, как она работает. Grails, hibernate и spring работают вместе над производительностью, и это не то, что я могу выразить в нескольких предложениях, но есть плагины это может помочь вам понять, что происходит за кулисами, например JavaMelody .

Наконец, если вы уже создали что-то, что работает, и все счастливы, не ломайте это. :)

0 голосов
/ 20 февраля 2012

Вероятно, вам может помочь служба с соответствующей областью действия: http://grails.org/doc/2.0.x/guide/services.html#scopedServices

Возможно, вам нужна служба с сессионной областью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...