Кэш
Кэш мемоизации в памяти для 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. Полезно в тестах, где не нужно, чтобы состояние утекало между кейсами.
import { normalizeColorCached, getCacheStats, clearColorCache } from 'color-value-tools'
// Первый вызов — разбирается и кэшируется
normalizeColorCached('#3498db')
// Второй вызов — мгновенное попадание в кэш
normalizeColorCached('#3498db')
getCacheStats() // { size: 1, hits: 1 }
clearColorCache() // кэш и счётчик попаданий сброшены в пустое состояниеПоскольку кэш никогда не вытесняет записи сам, вызывайте clearColorCache() (или disableCache()) периодически в долгоживущих процессах, разбирающих множество разных, редко повторяющихся строк цвета — иначе Map растёт всё время жизни процесса.