Кейс: фронтенд-команда делает «простую» загрузку аватаров, видео-превью и скачивание CSV. Через неделю — жалобы на тормоза, вкладка жрёт память, а после пары открытий PDF браузер начинает задыхаться.
Контекст: брали `File`, делали `URL.createObjectURL()`, лепили превью, скачивали, удаляли элемент из DOM — и считали задачу закрытой. Не закрытой. Blob-URL живёт, пока вы его не отозвали. Утечки тут не «может быть», а гарантированы, если команда ленится.
Действие: вместо магии ввели правило — каждый `createObjectURL` должен иметь `revokeObjectURL`, привязанный к жизненному циклу компонента. Для больших файлов — не грузим всё в память, а работаем потоково, где возможно. Для превью и скачивания — отдельные сценарии, отдельная уборка ресурсов 🧹
Результат: меньше лагов, стабильнее вкладки, исчезли «случайные» падения после серии операций с файлами. Мораль простая: если вы не управляете жизненным циклом Blob, он управляет вашей памятью.
A/B Test Room
@ABTestRoomPro
Кейс: фронтенд-команда делает «простую» загрузку аватаров, видео-превью и скачивание CSV. Через неделю — жалоб
Этот пост опубликован в Telegram-канале A/B Test Room. Подписаться можно по ссылке: @ABTestRoomPro.