Skip to content

Кэш

Кэш мемоизации в памяти для normalizeColor — полезен в циклах рендеринга, color-пикерах или в любом контексте с повторяющимися вызовами на одних и тех же строковых значениях. Это обычный Map, ключом которого служит входная строка, а не LRU-кэш — у него нет ограничения по размеру или политики вытеснения, и он уменьшается только тогда, когда вы очищаете его сами.

normalizeColorCached(input)

  • Принимает: input: string
  • Возвращает: ту же форму, что и normalizeColor

Кэширующая версия normalizeColor для повторяющихся строковых вызовов — см. Определение и парсинг.

clearColorCache()

  • Принимает: ничего
  • Возвращает: void

Очищает все закэшированные записи и сбрасывает счётчик попаданий в 0.

getCacheStats()

  • Принимает: ничего
  • Возвращает: { size: number, hits: number }

size — число различных строк, находящихся сейчас в кэше; hits — накопленный счётчик попаданий в кэш с момента последнего clearColorCache().

enableCache()

  • Принимает: ничего
  • Возвращает: void

Повторно включает кэш. Включён по умолчанию — нужен только после предыдущего вызова disableCache().

disableCache()

  • Принимает: ничего
  • Возвращает: void

Отключает кэширование — normalizeColorCached начинает просто вызывать обычный normalizeColor. Полезно в тестах, где не нужно, чтобы состояние утекало между кейсами.

ts
import { normalizeColorCached, getCacheStats, clearColorCache } from 'color-value-tools'

// Первый вызов — разбирается и кэшируется
normalizeColorCached('#3498db')

// Второй вызов — мгновенное попадание в кэш
normalizeColorCached('#3498db')

getCacheStats() // { size: 1, hits: 1 }
clearColorCache() // кэш и счётчик попаданий сброшены в пустое состояние

Поскольку кэш никогда не вытесняет записи сам, вызывайте clearColorCache() (или disableCache()) периодически в долгоживущих процессах, разбирающих множество разных, редко повторяющихся строк цвета — иначе Map растёт всё время жизни процесса.