|
Оптимизация передачи файлов между клиентом и сервером |
☑ |
0
Adept
11.04.17
✎
10:05
|
Есть файлики которые надо таскать с клиента на сервер, меняются не често, но и в базу их сохранять особого смысла нет. Решил сохранять адрес в хранилище, в параметре сеанса, и потом использовать данные из временного хранилища. Соответственно сеанс перезапустил - файлики подтянулись новые, работаешь в текущем сеансе - берешь из адреса в хранилище. Заметил странную вещь, время вызова с клиента на сервер практически не изменилось, такое ощущение что 1с - ка все равно тянет внутренность хранилища на сервер. Вот пример процедуры.
Может что то не так делаю(?именно с этим решением, в справочник я знаю как затянуть)
Функция ЗагрузиьтьДанныеВоВременноеХранилище(МассивСсылок) Экспорт
АдресВХранилище = Тесты.ПолучитьАдресТестовогоНабора();
Если НЕ ЗначениеЗаполнено(АдресВХранилище) Тогда
КаталогСФайлами = Тесты.ПолучитьКаталогСДанными();
ИменаФайловНеобходимыхДанных = ТестыКлиентСервер.ПолучитьИменаФайловНеобходимыхДанных(МассивСсылок);
СоответствиеДД = Новый Соответствие;
Для Каждого текФайл Из ИменаФайловНеобходимыхДанных Цикл
СоответствиеДД.Вставить(текФайл,Новый ДвоичныеДанные(КаталогСФайлами+текФайл));
КонецЦикла;
АдресВХранилище = ПоместитьВоВременноеХранилище(СоответствиеДД, Новый УникальныйИдентификатор);
Тесты.УстановитьАдресТестовогоНабора(АдресВХранилище);
КонецЕсли;
Возврат АдресВХранилище
КонецФункции
|
|
1
zak555
11.04.17
✎
10:15
|
Зачем файл на сервере
|
|
2
Adept
11.04.17
✎
10:19
|
(1) Большой, таскать туда сюда каждый раз долго
|
|
3
sFAQer
11.04.17
✎
10:27
|
(2) Зачем он впринципе там?
|
|
4
Adept
11.04.17
✎
10:30
|
(3) Данные из него нужны, это выгрузка из базы на клиенте, для сверки
|
|
5
sFAQer
11.04.17
✎
10:59
|
(4) Ну так данные и передавай на сервер, файл там на кой?
|
|
6
Adept
11.04.17
✎
11:01
|
(5) Файл не данные?
|
|
7
spiller26
11.04.17
✎
11:24
|
Попробуй сделать через временные файлы на сервере.
ПутьВременногоФайлаНаСервере = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Объект.ИмяФайлаНаКлиенте);
ДвоичныеДанные.Записать(ПутьВременногоФайлаНаСервере);
...
УдалитьФайлы(ПутьВременногоФайлаНаСервере);
это для одного, для толпы файлов, можешь создать им каталог на сервере.
|
|
8
Adept
11.04.17
✎
11:32
|
(7) уже тогда проще регистр, временные файлы чистить надо ...
|
|
9
H A D G E H O G s
11.04.17
✎
11:36
|
(8) Конечно проще и нужнее регистр. Ты еще спрашиваешь.
|
|
10
Adept
11.04.17
✎
11:39
|
(9) оно то да, но не понятно пчему при каждом обмене с сервером идет синхронизация хранилища, при том что ни оно не менялось ни адрес не менялся в этом хранилище
|
|
11
shpioleg
11.04.17
✎
11:53
|
Я у себя так сделал. Предварительно на клиенте зипую большой файл во временный, создаю двоичные данные, удаляю временный файл, двоичные данные передаю на сервер параметром функции.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший