Оптимальный способ сделать то, что вы описываете (я предполагаю, что вы знаете, что клиент / серверный ввод-вывод уже является узким местом), это отправлять только изменения в обоих направлениях после заполнения клиента.
Это может быть просто, если вы применили модель ведения журнала для обновления данных. Чтобы любой процесс мог внести изменения в общие данные, он должен создать транзакцию с меткой времени, которая будет добавлена в журнал. Обновление данных выполняется методом, который применяет транзакцию к данным.
Если ваша модель данных поддерживает журналы транзакций, у вас есть простой способ синхронизировать клиент и сервер с минимальным сетевым трафиком: для обновления клиента сервер отправляет все записи журнала, созданные с момента последний раз клиент обновлялся.
Это может быть значительный объем работы по встраиванию в существующую конструкцию. Прежде чем идти по этому пути, вы должны быть уверены, что проблема, которую вы пытаетесь решить, на самом деле является проблемой, которая у вас есть.