Добрый день
Есть иерархическая структура,

строится на сервере, потом передаётся клиентам,причём,изменния происходят на сервере,но клиентам передается вся структура полностью, если клиентов много, то это ощутимая нагрузка на сервер, так т.к структура состоит из 15000-20000 элементов.Идея состоит в том что клиент хранит свою локальную копию структуры, если происходит изменние на сервере, то клиенту передается только изменение, а не вся структура. Также необходимо сохранять изменения на серверной стороне для тех клиентов, которые не подключены к серверу в данный момент.
Какие есть идеи как для такой структуры хранить изменения?
Спасибо