Загрузки картинок из интернет по защищённому соединению (SSL)
Добрый вечер!
У нас внешние программисты в список номенклатуры вывели картинки непосредственно с нашего сайта. По 6 картинок максимум на товар.
Обратите внимание на проверку кода состояния ответа.
Если перепутать тип соединения, например, в конструкторе HTTPСоединения, как сделали эти программисты - а у нас с сайтом нашей компании, например, оно в любом случае устанавливается защищённое, - то по идее, любой вообще запрос будет давать ответ со статусом 301. И такой, который в точности соответствует имеющемуся ресурсу, и такой, который вообше ведёт в никуда.
При этом на практике, часть картинок через незащищённое соединение, как ни удивительно, подгружается-таки.
Но на многие товары мы не видим изображений.
Так что я исправил код, чтобы соединение было в любом случае защищённое:
И не устанавливалось заново каждый раз, а бралось из сохраняемого значения (в глобальной переменной - не знаю, стоит ли фиксировать объект HTTPСоединение: если подвиснет такой объект на час - не примет ли сайт это за хакерскую атаку? везде же сейчас проактивные защиты...)
все фотки подтягиваются.
Но это ТАК долго! Список товаров ТАК стал тормозить!!
вопрос: как бы это дело разогнать?
- Очевидный ответ, наверное, - проверять сначала незащищённым соединением, упадёт ли хоть одна фотка, а потом - незащищённым - на первый же провал выключать махину (потому что ведь даже для фот, которых нет на сайте, - приходится несколько секунд ждать, когда интернет-запрос в этом убедится)
- Как вариант: ограничить список используемых сертификатов удоцентров в конструкторе SSL-параметра. Может быть, от этого каждый запрос станет срабатывать быстрее?
- Сисадмин предложил подгружать не фотки целиком, а thumbnail'ы. Завтра узнаем у разработчиков сайта, куда они сунули скрипт, который генерирует маломерки. Раньше такой потребности не возникало, т.к. всё работало и так с приемлемой скоростью.
- Ещё говорят, можно вывести фотки на сайте в CDN на наши мощности.
Какие ещё варианты?
Перейти к подгрузке картинок из базы/из томов на диске - пока не рассматриваем: 100%-достоверная синхронизация с сайтом очень важна. Не должно быть такого, что мы видим какую-то картинку в 1С и не знаем, что на сайт она так и не попала!
У нас внешние программисты в список номенклатуры вывели картинки непосредственно с нашего сайта. По 6 картинок максимум на товар.
Артикул = Номенклатура.Артикул;
Соединение = Новый HTTPСоединение("RabotodatelDyadiVasi.ru");
Для Нум = 1 По 6 Цикл
СуффиксФайла = ?(Нум = 1, "", "-" + Строка(Нум - 1));
Запрос = Новый HTTPЗапрос("upload/photo/" + Артикул + "/" + Артикул + "" + СуффиксФайла + ".jpg");
Ответ = Соединение.Получить(Запрос);
Если Не Ответ.КодСостояния = 200 Тогда
Запрос = Новый HTTPЗапрос("upload/photo/" + Артикул + "/" + Артикул + "" + СуффиксФайла + ".JPG");
Ответ = Соединение.Получить(Запрос);
КонецЕсли;
Если Не Ответ.КодСостояния = 200 Тогда
Для мНум = Нум По 6 Цикл
Форма["Картинка" + Строка(мНум)] = "";
КонецЦикла;
Прервать;
КонецЕсли;
ДвоичныеДанныеКартинки = Ответ.ПолучитьТелоКакДвоичныеДанные();
Форма["Картинка" + Строка(Нум)] = ПоместитьВоВременноеХранилище(Новый Картинка(ДвоичныеДанныеКартинки));
Если Нум = 1 Тогда
Форма.АдресКартинки = Форма["Картинка" + Строка(Нум)];
КонецЕсли;
КонецЦикла;
ПоказатьОбратите внимание на проверку кода состояния ответа.
Если перепутать тип соединения, например, в конструкторе HTTPСоединения, как сделали эти программисты - а у нас с сайтом нашей компании, например, оно в любом случае устанавливается защищённое, - то по идее, любой вообще запрос будет давать ответ со статусом 301. И такой, который в точности соответствует имеющемуся ресурсу, и такой, который вообше ведёт в никуда.
При этом на практике, часть картинок через незащищённое соединение, как ни удивительно, подгружается-таки.
Но на многие товары мы не видим изображений.
Так что я исправил код, чтобы соединение было в любом случае защищённое:
Соединение = Новый HTTPСоединение(Сайт,,,,,,Новый ЗащищенноеСоединениеOpenSSL())
И не устанавливалось заново каждый раз, а бралось из сохраняемого значения (в глобальной переменной - не знаю, стоит ли фиксировать объект HTTPСоединение: если подвиснет такой объект на час - не примет ли сайт это за хакерскую атаку? везде же сейчас проактивные защиты...)
все фотки подтягиваются.
Но это ТАК долго! Список товаров ТАК стал тормозить!!
вопрос: как бы это дело разогнать?
- Очевидный ответ, наверное, - проверять сначала незащищённым соединением, упадёт ли хоть одна фотка, а потом - незащищённым - на первый же провал выключать махину (потому что ведь даже для фот, которых нет на сайте, - приходится несколько секунд ждать, когда интернет-запрос в этом убедится)
- Как вариант: ограничить список используемых сертификатов удоцентров в конструкторе SSL-параметра. Может быть, от этого каждый запрос станет срабатывать быстрее?
- Сисадмин предложил подгружать не фотки целиком, а thumbnail'ы. Завтра узнаем у разработчиков сайта, куда они сунули скрипт, который генерирует маломерки. Раньше такой потребности не возникало, т.к. всё работало и так с приемлемой скоростью.
- Ещё говорят, можно вывести фотки на сайте в CDN на наши мощности.
Какие ещё варианты?
Перейти к подгрузке картинок из базы/из томов на диске - пока не рассматриваем: 100%-достоверная синхронизация с сайтом очень важна. Не должно быть такого, что мы видим какую-то картинку в 1С и не знаем, что на сайт она так и не попала!
Найденные решения
(1) самое главное это сделать замер! Он вам покажет, где идут тормоза. Там уже можно будет понять в чем проблема и оптимизировать.
Слабое звено это загрузка.
Хотите чтобы было быстро и без тормозов, то только локально!
Если тормозит сайт, вариант поднятия фтп может ускорит работу?
Слабое звено это загрузка.
Хотите чтобы было быстро и без тормозов, то только локально!
Если тормозит сайт, вариант поднятия фтп может ускорит работу?
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) самое главное это сделать замер! Он вам покажет, где идут тормоза. Там уже можно будет понять в чем проблема и оптимизировать.
Слабое звено это загрузка.
Хотите чтобы было быстро и без тормозов, то только локально!
Если тормозит сайт, вариант поднятия фтп может ускорит работу?
Слабое звено это загрузка.
Хотите чтобы было быстро и без тормозов, то только локально!
Если тормозит сайт, вариант поднятия фтп может ускорит работу?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот