Skip to content

feat: добавлена функция для упрощения анализа XML, удаляющая содержимое тегов <crs:data></crs:data>#24

Open
johnnyshut wants to merge 1 commit intoinfina15:masterfrom
johnnyshut:feature/ignore-crs-data

Conversation

@johnnyshut
Copy link

Оптимизация разбора запросов помещения в хранилище (crs:data)

Закрывает: #11 #12 #20 #22

Проблема: При больших запросах на помещение блок <crs:data> занимает основной объём тела. ЧтениеXML тормозит на таком объёме, а для проверки комментариев и метаданных содержимое crs:data не нужно.

Решение: Для анализа собирать облегчённый XML без содержимого crs:data.

  1. Функция ПолучитьОблегчённыйXMLДляАнализа(СтрокаXML)
    Вырезает содержимое между <crs:data> и </crs:data>, оставляя пустые теги. В ПолучитьПараметрыЗапроса после ПолучитьТекстХМЛ вызывается эта функция, в ЧтениеXML передаётся уже облегчённая строка.

  2. Функция ПолучитьОблегчённыйТекстXMLИзПотока(ДвоичныеДанныеЗапроса)
    Потоковое чтение по кускам (64 КБ): копирует в результирующую строку только фрагменты до <crs:data> и после </crs:data>, между тегами подставляет <crs:data></crs:data>. Содержимое crs:data ни разу не загружается в память — снижается пик памяти и ускоряется разбор.

Файл: src/Модули/ОбработкаДанных.os

@johnnyshut
Copy link
Author

@infina15 посмотришь? у меня на ЕРПУХ проблему исправило.

@infina15
Copy link
Owner

infina15 commented Feb 4, 2026

@johnnyshut а что именно полечило-то? Перестало зависать? Жрало память, теперь не жрет? Мне просто кажется еще большие запросы надо в файл на диск складывать

@johnnyshut
Copy link
Author

@johnnyshut а что именно полечило-то? Перестало зависать? Жрало память, теперь не жрет? Мне просто кажется еще большие запросы надо в файл на диск складывать

Без этих строк помещение версии от 1 Гб в хранилище зависало и не подавало признаков жизни.

Из того, как еще оптимизировать, я бы само получение СтрокиXML изменил, чтобы читать в потоке и пропускать блок crs:data, но, это не исправление бага уже, а скорее оптимизация и требует сильно больше ресурсов.

@johnnyshut
Copy link
Author

johnnyshut commented Feb 4, 2026

Добавлю, что не просто 1Гб версия должна быть, а машина с сервером хранилища должна быть нагружена выше среднего.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants