У меня есть веб-приложение, в котором редактор клиентской стороны редактирует действительно большой текст, который известен на стороне сервера.Сетевое различие между двумя строками в Javascript
Клиент может вносить любые изменения в этот текст.
Что является самым эффективным в сети способом передачи разницы в результатах, которые понимает сервер? Кроме того, так как это будет происходить на стороне клиента (JavaScript), я также хотел бы, чтобы это было «быстрым» (или по крайней мере не заметно медленно)
Некоторые сценарии:
- Пользователь модифицирует один персонаж
- Пользователь подбирает несколько предложений в произвольных позициях
- Пользователь стирает все и приводит к пустым текстам.
Я не могу использовать diff-подобный синтаксис, поскольку он неэффективен в сети, он проверяет строки, где примеры 1 и 3 будут давать ужасные отличия (особенно последний, где результат будет больше, чем сам старый).
У кого-нибудь есть опыт в этом вопросе? Пользователь работает на действительно большом наборе данных - около 3-5 МБ текста, а загрузка всего «нового» контента - это большой нет-нет.
Чтобы быть ясным, я ищу «протокол» передачи, сравнение строк не является проблемой.
Вы можете использовать работу в стиле diff. Когда страница загружается, вы можете сохранить копию текста в памяти и затем разрешить редактирование. Перед публикацией вы можете выполнить свой diff и отправить эту информацию. – BobbyShaftoe
Если я использую стиль diff, и пользователь изменяет один символ, вся строка будет дифференцироваться, и если все будет стерто, тогда вы получите полные блоки операторов '--', которые больше исходного, в зависимости от количества новых строк. – LiraNuna