phantomjs を使用して、ページに影響を与える競合状態の可能性に関するいくつかのメトリックを取得しようとしています.2 つのスクリプト ファイルがあり、サイトでホストされている一部の機能は、サード パーティからのファイルによって設定されたいくつかのグローバルに依存しています.
phantomjs で onResourceReceived を使用すると、各ファイルがロードされたときにログを記録し、そのテストを何度も実行して、この競合状態が問題を引き起こす頻度を把握できると考えました。私のコードの例を以下に示します (実際のコードではありません)。私は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')));
これは、各ファイルが2回ログに記録されることを除いて、私が期待したとおりに実行されますが、これはなぜですか? 時差が大きく異なる場合もあります。locator.css: 323msecs status: 200 locator.css: 323msecs status: 200 en-GB.json: 2199msecs status: 200 en-GB.json: 2200msecs status: 200 テスト 1 完了!!!