[I128-2255] Отказ от медленного файлового кеширования (GetSidFile/SetSidFile) класса Record


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2 >> [I128-2255] Отказ от медленного файлового кеширования (GetSidFile/SetSidFile) класса Record📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Новые возможности 2026.2 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль Record - Запись ИРБИС

Завершено: 26.03.2026 15:49

Отказ от медленного файлового кеширования (GetSidFile/SetSidFile) класса Record

Основные изменения:

  1. Внедрение системы кэширования:
  1. Рефакторинг административной панели (Разделение UI и логики):
  1. Безопасность:
  1. Оптимизация и исправления в ядре:
  1. Прочее:

-

Рефакторинг ObjectModule: внедрение кэширования, разделение логики представления и усиление безопасности

Основные изменения:

  1. Внедрение системы кэширования:

    • Прямая работа с файловой системой через General->GetSidFile/SetSidFile заменена на использование класса Cache.
    • Реализовано кэширование содержимого записей (Record*Content) и карты соответствия SID к MFN (Record*SidMap) в модулях Database и Record. Это существенно ускоряет повторное чтение записей.
    • Добавлено кэширование настроек модулей (ModuleOpts) и кэша записей модулей (ModuleRecordsCache).
  2. Рефакторинг административной панели (Разделение UI и логики):

    • PHP: Создан новый класс ObjectModuleAdminView, который отвечает за формирование конфигурации интерфейса. Из ObjectModule.php удалена генерация громоздких JS-строк. Теперь данные передаются в виде структурированного массива.
    • JS: Создан новый компонент Irbis.Admin.ModuleSettingsPanel (ModuleAdminPanel.js), который инкапсулирует логику формы настроек на стороне клиента.
    • Использование json_encode вместо ручной склейки строк для передачи данных в ExtJS, что повышает надежность и упрощает поддержку.
  3. Безопасность:

    • Добавлена защита от LFI (Local File Inclusion) и Path Traversal в функциях UseModule, UseClass и магическом методе __call класса ObjectModule. Теперь имена модулей и внешних функций фильтруются на наличие недопустимых символов (например, ..).
    • В методах LinkAdd и LinkDrop прямой доступ к массиву $_REQUEST заменен на безопасное получение параметров через General->GetRequest.
  4. Оптимизация и исправления в ядре:

    • ObjectModule: Все свойства класса теперь имеют явный модификатор доступа public вместо устаревшего var.
    • General: Оптимизированы методы работы с путями и файлами. Исправлены потенциальные ошибки в GetModuleRecord и GetModuleRecordSid.
    • WIrbis: Обновлен список подключаемых скриптов, добавлен новый JS-файл административной панели.
    • JS: Проведен рефакторинг irbis~~reclist128~~paneltab.js для улучшения обработки событий прокрутки и выбора записей.
  5. Прочее:

    • Удален закомментированный неиспользуемый код (механизм подписки на события в ObjectModule).
    • Добавлены проверки на существование данных перед их использованием (например, в fe_fGetAllProfilesCount).
    • Улучшена типизация аргументов в функциях ядра (modules.php).

1. Связанные задачи

1.1. 🔗 blocks: I128-2253

[I128-2253] Многоуровневое кеширование Статус: Завершено | Автор: Ilya Mikhaylenko

1.2. 🔗 Соответствует задача: I128-2281

[I128-2281] Отказ от медленного файлового кеширования (GetSidFile/SetSidFile) класса Record Статус: Открытая задача | Автор: Ilya Mikhaylenko