Сначала немного контекста:
В настоящее время мы используем ASP.NET Core MemoryCache MemoryCache Doc
В интерфейсе IMemoryCache есть метод GetOrCreateAsync(...), которому я могу передать фабрическую функцию Func Factory
Поскольку это сигнатура асинхронного метода, мне приходится полностью реализовать async await (иногда стек вызовов примерно из 8 методов), даже если само попадание в кеш является синхронным. В моем сценарии я обращаюсь к кешу примерно 200-2500 раз за запрос. Некоторые записи мне приходится обновлять каждые 60 минут, некоторые просто каждый день.
Теперь вопрос:
На данный момент я понимаю, что .NET Core должен создавать конечный автомат для каждого вызова, хотя я просто обращаюсь к кешу синхронно из-за сигнатуры его метода. Кто-нибудь из вас знает, насколько велики накладные расходы? Имеет ли смысл создать синхронную фабрику (это вызов Web-API) с небольшой блокировкой, чтобы я мог использовать GetOrCreate(...)? Или, может быть, у некоторых из вас есть совершенно иное мнение.
Надеюсь, вы поняли мою больную точку.
Подробнее здесь: https://stackoverflow.com/questions/509 ... -and-await