Медиа-портал производственной компании
В 2020 году, работая программистом в одной из IT-компаний, я участвовал в разработке медиа-портала для крупной производственной компании.
Цель проекта — предоставить дилерам удобный инструмент для доступа к маркетинговым и техническим материалам по всей линейке продукции.
Задачи и функциональность
- Организация хранения файлов в иерархической структуре: по линейке, модели, марке и т.д.
- Возможность загрузки больших объёмов файлов (сотни и тысячи файлов, десятки гигабайт) прямо через браузер.
- Автоматическая подстановка иконок и превью в зависимости от типа файла.
- Возможность редактирования описаний и управления файлами менеджерами.
- Для внешних пользователей реализовано три способа скачивания:
- Прямое скачивание отдельных файлов;
- Отложенное скачивание («корзина») — выбор и загрузка пакетом;
- Скачивание целого раздела архивом.
Сложности и технические решения
- Наследие старого проекта.
- У заказчика уже был аналогичный портал на 1С-Битрикс, но без нужного функционала. Новый портал нужно было реализовать на той же платформе, сохранив совместимость и улучшив архитектуру.
- Параллельная разработка и использование.
- Требовалось быстро запустить базовый функционал загрузки, чтобы менеджеры могли начать работу ещё до завершения проекта. В дальнейшем это потребовало дополнительной доработки и обработки уже загруженных данных.
- Массовая загрузка через браузер.
- Реализован механизм многопоточной chunk-загрузки с обработкой ошибок, контролем состояния и оптимизацией серверных параметров (PHP, apache, nginx, Bitrix).
- Ограничения инфраструктуры.
- При интенсивных операциях с файлами наблюдалось падение скорости дисков. Это потребовало внедрения очередей и отложенных операций для равномерного распределения нагрузки.
- Высокая скорость архивации и скачивания.
- Для достижения требуемой производительности создан асинхронный механизм формирования архивов с поэтапной сборкой и уведомлением пользователя о готовности.
Механика работы
- При загрузке файлов выполнялась предварительная проверка и отображался список всех загружаемых файлов.
- Для дубликатов предлагалось действие: удалить, заменить или переименовать.
- После подтверждения файлы распределялись по соответствующим разделам, создавались элементы в инфоблоках с описаниями и иконками.
- Для скачивания больших наборов данных использовался очередной обработчик: система формировала архив по шагам и уведомляла пользователя письмом со ссылкой на готовый файл.
Результаты:
- Полностью реализован требуемый функционал на платформе 1С-Битрикс.
- Система стабильно работает с большими объёмами данных и выдерживает высокую нагрузку при одновременных загрузках.
- Время формирования архивов и скачивания файлов сокращено в несколько раз.
- Повышен комфорт работы менеджеров и дилеров — загрузка, поиск и скачивание материалов стали быстрыми и надёжными.
- Проект успешно внедрён и используется заказчиком в производственной деятельности.