Сжатие данных на клиенте #760783


#0 by 7OH
Добрый день. Ищу совета - как сжимать данные на клиенте для отправки на сервер. Пример - читаем на клиенте файл (так как у серверов доступа нет обычно). Прочитанное надо отправить для анализа и обработки на сервер. В моём случае размер данных, отправляемых на сервер - 36 Мб - и приходится довольно долго ждать именно передачу параметра. Хотелось бы сжимать (думаю текстовые данные должны существенно сжаться) и отдавать на сервер. хран = Новый ХранилищеЗначения(стрВнутр, Новый СжатиеДанных); Но (как вычитал на этом же форуме) хоть в хэлпе и написано про ХранилищеЗначения, что "Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер)." при этом стабильно получаем "Тип не определен (ХранилищеЗначения) (Проверка: Тонкий клиент)"
#1 by Лефмихалыч
версия платформы?
#2 by 7OH
8.3.4.408
#3 by Лефмихалыч
у меня в СП написано, про хранилище, что Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
#4 by DmitrO
ХранилищеЗначения доступно только на сервере (в СП ошибка). Предлагаю сжать во временный файл на клиенте объектом ЗаписьZipФайла, передать на сервер как двоичные данные.
#5 by 7OH
как вариант можно попробовать. Работа с диском может занять много больше времени (запись + упаковка + чтение), чем передача текущего. Всё таки в памяти работа на порядки быстрее. Попробую с замером.
#6 by Лефмихалыч
может просто файлы выкладывать в какое-то место, куда и у сервера, и уклиента есть доступ?
#7 by RomanYS
Какова вероятность наличия такого места с каналом вдвое быстрее чем клиент-сервер? Имхо почти нулевая
#8 by Лефмихалыч
голословно, бездоказательно и бессмысленно
#9 by RomanYS
В вопрос и мое мнение, ничего больше. Просто я плохо представляю ситуацию, когда канал клиент-сервер меньше чем доступный с обоих сторон канал к третьему ресурсу. Хотя придумать такое можно.
#10 by 7OH
вопрос ставим принципиально - передаём с вёб-клиента на сервер. Вряд ли у них есть общий доступ. остался вопрос - как сохранить структуру в файл? ЗначениеВСтрокуВнутр на сервере тоже не доступно. Эксперимент провёл ради интереса со сторокой, обработанной на сервере через ЗначениеВСтрокуВнутр. Передача структуры на сервер и возврат стрВнутр - 106 сек. Передача на сервер стрВнутр - 6 сек. Сохранение в файл - 12 сек. Упаковка файла - 7 сек. Чтение двоичных данных из зип - 0.1 сек. Передача на сервер двоичных данных - 0.6 сек. Итого: 6 сек против 20 сек уже сжатой (106 сек) строки. То есть через файл не вариант даже с учетом того, что в файл структуру ещё как-то записать надо без сервера.
#11 by DmitrO
понятно что не писать данные на диск, а получить что-то сжатое в памяти и это сразу передать - будет быстрее. Но суть в том, что 1С так попросту не умеет. " и приходится довольно долго ждать именно передачу параметра" А как передавал, ДвоичнымиДанными? Надо попробовать через ПоместитьФайлы (НачатьПомещениеФайлов).
#12 by Лефмихалыч
зачем сохранять структуру в файл? Она легко передается между клиентом и сервером безо всяких там файлов
#13 by H A D G E H O G s
жесть какая-то
#14 by H A D G E H O G s
Как передаешь строку на сервер?
#15 by 7OH
Вот именно при передаче структуры с данными (с большим размером) - долго ждёт. А при поместить файл - он разве его при этом на сервер не будет отправлять ? - зря я написал "строку" - думал так легче будет. У меня в структуре загруженные данные с листов XLS - данных много.
#16 by disla
Я делал ПоместитьВоВременноеХранилище на клиенте, а потом ПолучитьИзВременногоХранилища на сервере, передавал двоичные данные. И наоборот также.
#17 by disla
данные - zip-файлы, которые пакуюся/распакуются на клиенте
#18 by DTX 4th
А как ты строку в файл сохранял? ЗначениеВФайл для помещения структуры в файл
#19 by 7OH
ЗначениеВФайл Сервер, толстый клиент, внешнее соединение а поместить надо бы на клиенте
#20 by H A D G E H O G s
Зряяя. Код передачи покажи.
#21 by H A D G E H O G s
#22 by 7OH
&НаКлиенте
#23 by H A D G E H O G s
Шаг первый: &НаСервереБезКонтекста Процедура ОбработатьДанныеНаСервере(Знач СтруктураФайла)
#24 by H A D G E H O G s
А по факту у тебя тормоза не на передаче данных, а на сериализации/десериализации.
#25 by 7OH
это и понятно "Передача на сервер стрВнутр - 6 сек." самому рисовать преобразователь структуры в строку как-то не очень улыбается. Под рукой 8.3.6 нету, чтобы проверить как с этим справится JSON (и возможна ли работа с ним на клиенте).
#26 by H A D G E H O G s
csv ?
#27 by 7OH
XLS к сожалению
#28 by H A D G E H O G s
Разбери его в csv, строку передай на сервер.
#29 by H A D G E H O G s
Ну и безконтекстный вызов и передача по значению.
#30 by Garykom
да похоже на "сериализации/десериализации" все тормоза, а не "на передаче"
#31 by H A D G E H O G s
Ты уже написал убийцу ТимВиевера?
#32 by Garykom
План уже написал, как и планировал, а что?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С