Кэширование больших объектов - производительность LocalCache

У меня есть несколько больших объектов, которые нужно хранить и извлекать из кеша. Эти объекты размером около 1 - 2 МБ.

Когда работает с localCache После включения поиск занимает не более нескольких миллисекунд, но без него он занимает около 3 секунд.

Я использую Azure In-role cache (colocated).

Кто-нибудь может пролить свет на то, почему это было бы намного медленнее, если не включен localCache?

1 ответ

Решение

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

По данным MSDN:

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

Принимая во внимание, что когда локальный кэш отключен, каждый запрос на поиск направляется в кэш вне процесса, каждый раз приводя к извлечению объекта из памяти процесса.

-Sameer

Другие вопросы по тегам