Использование модулей с повторным использованием возвращаемых значений
Намечается серия постов про стандарты клиент-серверного взаимодействия и начнём с модулей повторного использования.
#std724
1. Общие модули с повторным использованием возвращаемых значений (далее: кэш) предусмотрены для кэширования результатов работы функций, которые в них размещены - на время сеанса или на время вызова. Их следует применять для экономии вычислительных ресурсов сервера и для минимизации клиент-серверного взаимодействия.
...
2. В то же время, чрезмерное (неоправданное) применение общих модулей с повторным использованием возвращаемых значений может приводить к излишнему потреблению памяти.
2.1. Недопустимо создать общие модули с повторным использованием, из которых возвращаются данные, вычисление которых выполняется быстрее, чем получение из кэша.
...
3. Не следует изменять данные, полученные из кэша. В противном случае, возможны скрытые ошибки в работе программы
...рекомендуется использовать значения, состояние которых изменить нельзя, например: ФиксированныйМассив, ФиксированнаяСтруктура.
...
4. Если в модуле с повторным использованием размещено несколько экспортных функций, которые не только вызываются «снаружи», но и вызывают друг друга, то следует иметь в виду, что результат «внутренних» вызовов не кэшируется.
...
5. Если у общего модуля свойство "Повторное использование возвращаемых значений" установлено в значение "На время сеанса", то в значениях, возвращаемых функциями такого модуля, нельзя использовать значения типа МенеджерВременныхТаблиц, Запрос, объекты базы данных (например, ДокументОбъект, ОтчетОбъект) причем, как непосредственно, так и в составе любых коллекций.
...
Рекомендую пройти в сам стандарт и прочитать приведенный пример в 4 пункте, хоть это и редкий случай, но для понимания полезно)
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std724