我试图用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')));
这个运行我的预期,除了每个文件被记录两次,为什么这样?
有时候时间差异很大.
locator.css:323msecs状态:200
locator.css:323msecs状态:200
en-GB.json:2199msecs状态:200
en-GB.json:2200msecs状态:200
测试1完成!