Допустим есть некий сайт, с которого я скачиваю много картинок. Пример сайта:
https://site.com/111.png
https://site.com/222.png
https://site.com/333.png
Скачиваю я их так:
ImageIO.read(new URL(link))
Проблема в том, что я скачиваю очень много и часто, что не есть хорошо для производительности. Возможно ли открыть соединение к сайту и скачивать картинки только по их "id"? Чтобы каждый раз не создавать соединение. Либо открыть одно соединение и скачать через него много картинок разом.
Вы можете установить соединение с web-сервером и попытаться запросить сразу несколько файлов, только если сервер поддерживает HTTP pipelining:
Socket s = new Socket(InetAddress.getByName("site.com"), 80);
PrintWriter pw = new PrintWriter(s.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
pw.println("GET /1.jpg HTTP/1.1");
pw.println("Host: site.com");
pw.println("Connection: keep-alive");
pw.println();
pw.println("GET /2.jpg HTTP/1.1");
pw.println("Host: site.com");
pw.println();
pw.flush();
String t;
while ((t = br.readLine()) != null) System.out.println(t);
br.close();
pw.close();
s.close();
Если сервер не поддерживает keep-alive, я бы вынес закачку картинок в разные потоки, это ускорит время работы вашей программы.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Можно ли создать создать в JavaFx диалоговое окно что бы при вызове метода showDialog() он возвращал не которые парамеры, как это происходит в Alert и он возвращает...
В БД сохранены ссылки на исображения которые локально хранятся на устройствеПри открытии лист вью я использую кастомный адаптер который...
Имеется запись вида: List list; В абстрактном классеВ наследниках через конструктор, я его инициализирую