Кеширование DAL возврата объектов? - PullRequest
0 голосов
/ 01 декабря 2011

Мне было интересно, стоит ли мне каким-то образом кэшировать объекты, возвращенные из моего DAL? У меня может быть несколько элементов управления пользовательского интерфейса, вызывающих одни и те же данные в одной загрузке страницы.

Что бы вы порекомендовали, ребята? Я начинаю немного осторожничать? Это не ужасное количество данных. Но если мне нужно каким-то образом кешировать, какой будет рекомендуемый подход?

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Вы можете кешировать И если у вас действительно есть несколько элементов управления на одной странице, использующих одни и те же данные, вы можете вызвать данные один раз на родительской странице и передать ссылку на каждый элемент управления с помощью Setterкаждый элемент управления (вместо того, чтобы каждый элемент управления извлекал одни и те же данные из самого DAL), например:

myControl.AllUsers = _allUsers;
....
myOtherControl.AllUsers = _allUsers;

Я также согласен с @DanielHilgarth.Кэширование добавляет сложности (например, когда обновлять кеш).Если страница все равно быстро загружается, я бы не стал беспокоиться.

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

0 голосов
/ 01 декабря 2011

Для этого вы можете взглянуть на эту библиотеку:

http://www.reactiveui.net/

обеспечивает удобный способ кеширования ваших объектов.

Я бы сказал, что это очень аккуратный способ.

0 голосов
/ 01 декабря 2011

Зависит от того, насколько это безопасно и необязательно. Если данные, с которыми вы работаете, не требуют данных в реальном времени (т. Е. Вашего блога), то во что бы то ни стало кэшируйте данные, если считаете, что в этом нет необходимости (то есть ваш сайт работает медленно).

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

Существует два основных типа кэширования: скользящий и фиксированный.

Скользящий кэш (кэш, который расширяется каждый раз, когда выполняется правильный поиск), отлично подходит для ресурсов, которые имеют относительно простые для вычисления значения, но могут страдать от нагрузки на базу данных / сеть. Кэшируйте на 1 час (или всегда) в скользящем кеше, а затем вручную аннулируйте (удаляйте) кеш всякий раз, когда для DAO происходит INSERT / UPDATE / DELETE. Таким образом, пользователь будет видеть результаты в реальном времени, но при этом будет по возможности кэшироваться.

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

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