|
Оптимизация передачи файлов между клиентом и сервером | ☑ | ||
---|---|---|---|---|
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
|
Я у себя так сделал. Предварительно на клиенте зипую большой файл во временный, создаю двоичные данные, удаляю временный файл, двоичные данные передаю на сервер параметром функции.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |