При использовании аннулирования на основе уведомлений в локальном кэше ttlValue
время -out по-прежнему делает недействительными элементы кеша и, таким образом, вызывает выборку из кластера кеша при следующем запросе.
Например, в приведенной ниже конфигурации время ожидания элементов истекает через 300 секунд, но также каждые 60 секунд будут проверяться уведомления об аннулировании в кластере (например, если они были удалены):
<dataCacheClient name="default">
<localCache isEnabled="true" sync="NotificationBased" objectCount="100000" ttlValue="300" />
<clientNotification pollInterval="60" />
</dataCacheClient>
Проблема:
У меня есть набор объектов, которые неизменяемы, т. е. не изменяются. Это означает, что им никогда не нужно иметь аннулирование на основе тайм-аута, чтобы «обновить» себя.
По сути, это означает, что неизменяемые объекты будут без необходимости удаляться из локального кэша. Если таких элементов много, потенциально может быть заметное снижение производительности, особенно когда необходимо прочитать тысячи элементов.
При установке его равным нулю в конструкторе DataCacheLocalCacheProperties
я получаю следующее исключение:
An exception of type 'System.ArgumentException' occurred in Microsoft.ApplicationServer.Caching.Client.dll but was not handled in user code
Additional information: Time-out should be a positive value.
Другой вариант: я должен установить недостижимый номер.
Почему нам не разрешено иметь локальный кэш с нулевым временем ожидания?
Я использую кэширование в роли Azure (совместно).