Skip to content

Кэш ​

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

normalizeColorCached(input) ​

Та же форма, что и у возвращаемого значения 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 растёт всё время жизни процесса.