Я загружаю файл * .rar с моего веб-сервера с помощью HttpURLConnection
. Я добавил некоторые временных строк кода, чтобы приблизительно измерить (это было довольно неточно) скорость загрузки при запуске загрузки через Java/HttpURLConnection
. Скорость загрузки колебалась где-то между 400kb/s и 2mb/s, приблизительно.Как увеличить скорость загрузки при загрузке через HttpURLConnection?
Загрузка этого же файла через мой браузер (Mozilla FireFox) Я получаю полный 12,5 Мб/с, что поддерживает мой веб-сервер. Используя FireFox, я загружаю файл примерно через 6 секунд, тогда как Java-код загружает файл через 12-30 секунд.
Вот очищенный фрагмент кода, который я тестирую, просто для иллюстрации подхода к загрузке файла.
[...]
httpConn = (HttpURLConnection) (new URL(downloadURL)).openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Cookie", cookie);
[...]
try (InputStream is = httpConn.getInputStream();
FileOutputStream fos = new FileOutputStream(targetFile)) {
int bytesRead;
byte[] buffer = new byte[4096];
while ((bytesRead = is.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
}
[...]
Я предполагаю, что есть узкое место где-то внутри этой части кода, которую я не могу получить.
Как увеличить скорость загрузки?
Просто, чтобы прояснить, говорим ли мы 12,5 МБ/с или 12,5 Мбит/с? –
Pardon, 12,5 мегабайт/с (100 Мбит). – phew
Я бы попытался увеличить буфер 4k, чтобы сказать 256k. Буфер 4k необходимо заполнить ~ 3000 раз в секунду, чтобы заполнить вашу ссылку, которая может быть узким местом. –