Próbuję użyć phantomjs, aby uzyskać dane na temat prawdopodobieństwa wystąpienia stanu wyścigu na stronie, mam 2 pliki skryptów, niektóre funkcje hostowane w mojej witrynie zależą od niektórych globali ustawionych przez plik pochodzący od strony trzeciej .onResourceReceived dwa razy rejestruje każdy zasób?
Pomyślałem, że używając onResourceReceived w phantomjs mogę zalogować się po załadowaniu każdego pliku, a następnie uruchomić ten test kilka razy, aby zorientować się, jak często ten stan wyścigu spowoduje problemy, przykład mojego kodu znajduje się poniżej (to jest nie rzeczywisty kod i nie jestem związany z BBC):
(function (p, wp) {
"use strict";
var page, start,
count = 0, max = 10,
webpage = require('webpage'),
url = "http://www.bbc.co.uk";
function process() {
if (max == count) {
console.log('done processing!');
p.exit();
} else {
count++;
start = new Date();
page = wp.create();
page.onResourceReceived = onResourceReceived;
page.open(url, onOpen);
}
}
function onResourceReceived(response) {
var match, t = new Date(),
url = response.url,
status = response.status;
t = t.valueOf() - start.valueOf();
if (!!(match = url.match(/locator\.css/))) {
console.log(match[0] + ': ' + t + 'msecs status: ' + status);
}
if (!!(match = url.match(/en-GB\.json/))) {
console.log(match[0] + ': ' + t + 'msecs status: ' + status);
}
};
function onOpen() {
console.log('Test ' + count + ' done!!!');
page.close();
process();
}
process();
}(phantom, require('webpage')));
to trochę trwa, jak się spodziewałem, z wyjątkiem, że każdy plik jest rejestrowane dwa razy, dlaczego tak jest? Czasami różnice w czasie są bardzo różne. locator.css: 323msecs cywilny: 200 locator.css: 323msecs cywilny: 200 en-GB.json: 2199msecs statusu: 200 en-GB.json: 2200msecs statusu: 200 test 1 zrobione !!!
Dziękuję bardzo, ta odpowiedź jest idealna –