> Как реализовать кэш с методами get, set, delete и clear с поддержкой TTL в JavaScript (JavaScript)
Уровень: middle · Роль: frontend · Категория: Технические вопросы
Компании: Spotware
Стек: JavaScript
> Пример ответа
Для реализации кэша с TTL (время жизни) в JavaScript можно использовать класс, хранящий данные в Map вместе с меткой времени. Каждый элемент будет содержать значение и время истечения. Методы get, set, delete и clear управляют данными, а проверка TTL происходит при каждом get.
JAVASCRIPTclass TTLCache {constructor(defaultTTL = 60000) { // TTL по умолчанию 60 секундthis.cache = new Map();this.defaultTTL = defaultTTL;}set(key, value, ttl = this.defaultTTL) {const expiresAt = Date.now() + ttl;this.cache.set(key, { value, expiresAt });}get(key) {const entry = this.cache.get(key);if (!entry) return undefined;if (Date.now() > entry.expiresAt) {this.cache.delete(key);return undefined;}return entry.value;}delete(key) {return this.cache.delete(key);}clear() {this.cache.clear();}// Опционально: очистка просроченных записейcleanExpired() {const now = Date.now();for (const [key, entry] of this.cache) {if (now > entry.expiresAt) {this.cache.delete(key);}}}}// Пример использования:const cache = new TTLCache(5000); // 5 секундcache.set('user', { name: 'Alice' });console.log(cache.get('user')); // { name: 'Alice' }setTimeout(() => console.log(cache.get('user')), 6000); // undefined
Ключевые особенности:
- Используется
Mapдля быстрого доступа и сохранения порядка вставки. - TTL задается в миллисекундах, можно переопределить для каждого ключа.
- При
getавтоматически удаляются просроченные записи. - Метод
cleanExpiredпозволяет очищать кэш в фоне (например, по таймеру).
> Похожие задачи по frontend
Как работает всплытие и захват событий в JavaScript и какой обработчик сработает первым на div и кнопке
Как определить элемент, по которому был произведен клик при делегировании событий в JavaScript
Как обрабатывать JSON ответ в JavaScript
Как создать собственную функцию executor в Promise в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью