Tworzę małą aplikację do pomiaru czasu ładowania dokumentu HTML, sprawdzając co x liczbę sekund.Używanie Jsoup connect() w pętli. Pierwsze żądanie jest zawsze znacznie wolniejsze niż wszystkie kolejne.
Używam jsoup w pętli:
Connection.Response response = null;
for (int i = 0; i < totalGets; i++) {
long startTime = System.currentTimeMillis();
try {
response = Jsoup.connect(url)
.userAgent(USER_AGENT) //just using a Firefox user-agent
.timeout(30_000)
.execute();
} catch (IOException e) {
if (e.getMessage().contains("connect timed out")) {
System.out.println("Request timed out after 30 seconds!");
}
}
long currentTime = System.currentTimeMillis();
System.out.println("Response time: " + (currentTime - startTime) + "ms" + "\tResponse code: " + response.statusCode());
sleep(2000);
}
Problem mam jest, że pierwsze wykonanie połączenia jsoup jest zawsze wolniej niż cały kolejny raz, bez względu na stronie internetowej.
Oto moje wyjście na https://www.google.com
Response time: 934ms Response code: 200
Response time: 149ms Response code: 200
Response time: 122ms Response code: 200
Response time: 136ms Response code: 200
Response time: 128ms Response code: 200
Oto co mam na http://stackoverflow.com
Response time: 440ms Response code: 200
Response time: 182ms Response code: 200
Response time: 187ms Response code: 200
Response time: 193ms Response code: 200
Response time: 185ms Response code: 200
Dlaczego to zawsze szybciej po pierwszym połączyć? Czy istnieje lepszy sposób określenia szybkości ładowania dokumentu?
Może to pomoże: http://stackoverflow.com/questions/16994628/jsoup-seems-to- be-caching-can-i-disable-this – acdhirr