У мене є сховище, яке витягує як з db, так і іноді з кеша.
Для цього я створив інтерфейсICacheWrapper, що дозволяє repo використовувати HttpRuntime.Cache, AppFabric, що завгодно. Бетонні класи ICacheWrapper зазвичай приймають кеш у конструкторі так: новий HttpCacheWrapper (HttpRuntime.Cache)
Конструктор репо приймає посилання на обгортку кеша так:
myRepo = new Repo(new HttpCacheWrapper(HttpRuntime.Cache));
Якщо я створюю 2 репо, чи глибоко скопіюється кеш? Я б не думав, але наші проблеми продуктивності вказують інакше. Чи я пропустив щось тут?
Дякую за будь-яку допомогу!
Відповіді:
0 для відповіді № 1Що ти бачиш? Що робить HttpCacheWrapper з HttpRuntime.Cache, він проходить?
Я підозрюю, що те, що ви бачите, замість цього - цеПолітика кеша, яка затримує речі занадто довго для швидкості кешування речей. Як сказав Реймонд Чен, "неправильна політика кешу не відрізняється від витоку пам'яті".
Спосіб, яким я хотів би ізолювати це, - спробувати протестувати лише з одним репо за допомогою політики, яку ви маєте. Подивіться, чи з'являються ваші проблеми продуктивності.
Якщо ні, тоді йдіть вперед і створіть другий репо та уважно стежите за використанням пам'яті.