OneS icon indicating copy to clipboard operation
OneS copied to clipboard

Прошу реализовать точечный сброс всех кэшей по ссылке объекта БД

Open tormozit opened this issue 1 year ago • 0 comments

https://partners.v8.1c.ru/forum/topic/2172509 Рассмотрит типы кэшей платформы, ключами в которых выступают ссылки:

  • кэш результатов общих модулей (повторно используемых возвращаемых значений), где ссылка может быть в самом параметре и внутри структуры в параметре. Можно сбросить только полностью методом ОбновитьПовторноИспользуемыеЗначения(). Максимальное время неактуальности - 20 минут
  • объектный кэш (внетранзакционный, транзакционный) https://its.1c.ru/db/pubdevguide83#content:304:hdoc . Явный сброс не предусмотрен. Максимальное время неактуальности - 20 секунд.
  • кэш представлений ссылок (внетранзакционный, транзакционный) https://its.1c.ru/db/pubdevguide83#content:304:hdoc . Можно сбросить точечно на клиенте методом ОповеститьОбИзменении(Ссылка). Максимальное время неактуальности - 20 секунд.
  • кэш данных через точку. Можно сбросить точечно на клиенте методом ОповеститьОбИзменении(Ссылка). Максимальное время неактуальности - 20 секунд
  • кэш данных быстрого выбора . Можно сбросить точечно на клиенте методом ОповеститьОбИзменении(Ссылка). Максимальное время неактуальности - ?
  • кэш ограничений по типу. Можно сбросить точечно на клиенте методом ОповеститьОбИзменении(Ссылка). Максимальное время неактуальности - ?

Из этого списка видно, что

  1. Нет достаточно универсального доступного на сервере точечного способа сбросить все кэши по ссылке
  2. Есть как минимум один тип кэша (кэш результатов общих модулей), который может очень долго использовать неактуальные данные.

Часто после записи ссылочного объекта в текущем сеансе программа продолжает использовать его старые данные. Происходит это потому, что сначала данные объекта попадают в различные кэши, а затем после его записи они не сбрасываются. Вот пример для объектного кэша https://www.hostedredmine.com/issues/948225

Поэтому прошу сделать в платформе

  1. При записи объекта сброс всех кэшей по ссылке в текущем сеансе должен вызываться автоматически на сервере и при первой возможности на клиенте.
  2. Добавить серверный метод СброситьКэшиПоСсылкам(Ссылки) для явного такого сброса кэшей. Этот метод должен вызываться платформой автоматически из существующего метода платформы ОповеститьОбИзменении(Ссылка).

Кстати с учетом будущих оповещений клиента с сервера в 8.3.26 с этим методом можно будет при записи каких то важных объектов оперативно обновлять кэши по ним во всех клиентских сеансах.

tormozit avatar Feb 08 '24 04:02 tormozit