我使用以下代码从文本日志文件中读取数据,该文件不断增长。
setInterval(call, 1000);
function call() {
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function(data) {
readdata(data);
},
});
}
我的查询是,ajax是在每次调用中读取完整文件还是从上次调用中添加(新)添加的行。如果它在每次调用中读取整个文件,则当文件越来越大时它可能会崩溃。有没有办法只读取上次调用中的新行,并在文件停止增长时停止程序。
由于
答案 0 :(得分:3)
您可以使用headers
参数的settings
参数来ajax()函数设置Range
HTTP标头,以限制您接收的数据。< / p>
一些例子:
bytes=9500-
将开始以偏移9500发送数据。
bytes=-500
将发送最后500个字节。 这要求HTTP服务器支持范围(大多数都支持)。
Range标头记录在RFC 7233。
中采用您的示例代码:
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function (data) { readdata(data); },
headers: {
"Range" : "bytes=-500"
}
});
答案 1 :(得分:1)
作为neuhaus答案的补充,使用Range
标题,您可以从客户端存储已读取的总字节数。
因此,在每次请求时,您将只收到自上次调用以来附加的数据。
var byteRead=0;
setInterval(function(){
$.ajax({
type: "GET",
url: "GenNumber.txt",
dataType: "text",
success: function (data) {
byteRead+= data.length;
readdata(data);
},
headers: {
"Range" : "bytes="+byteRead+"-"
}
});
},1000);