есть ли способ загрузить порцию целевого текстового файла, проанализировать порцию, запросить другую порцию и т. Д.
Чтобы извлечь часть (или порцию) ресурсаиспользуйте заголовок HTTP Range .Большинство веб-серверов правильно соблюдают этот заголовок.
пример HTTP-запроса:
GET /resource/url/path HTTP/1.1\r\n
User-agent: whatever\r\n
Host: www.example.com\r\n
Range: bytes=0-3200\r\n\r\n
Обновление:
В jQuery v1.5 и более поздних версиях вы можете указать jQuery отправлять дополнительный HTTP-запросЗаголовки для отдельного вызова ajax, например:
$.ajax({type: "GET",
url: url,
headers : { "Range" : 'bytes=0-3200' },
....
Если вы не хотите изменять каждый вызов $.ajax()
, Stofke говорит, что вы можете использовать «beforeSend» fn.Примерно так:
$.ajaxSetup({ beforeSend : function(xhr) {
xhr.setRequestHeader("Range", "bytes=0-3200" );
}});
Используя $.ajaxSetup()
, вам потребуется изменить заголовок диапазона для каждого дополнительного вызова.
Я не знаю, как заставить jQuery автоматически загружать ресурс по частям.Я полагаю, вам придется делать это самостоятельно с помощью setTimeout () или чего-то еще, в success () вызова ajax.Каждый раз, когда вы получаете ответ, вызывайте setTimeout () и выполняйте следующий вызов ajax.Ваш резидентный браузер Javascript должен будет отслеживать, какие части файла вы уже получили, и какую часть (байтовый индекс) вы хотите получить следующей.
Еще один способ сделать это - сделать ajax-вызовы только тогда, когда ваше приложение готово к этому.Вместо того чтобы ждать успеха () от вызова ajax, просто сделайте вызов ajax после того, как вы закончили обработку результатов первого поиска диапазона.
Также: для поддержки арифметических целей перед выполнением первого GET вы можете использовать вызов HEAD, чтобы узнать длину ресурса, которая сообщит вам максимальный индекс в диапазоне, который вы можете использовать.