Skip to content

Commit f4a4ae1

Browse files
committed
add cache option
1 parent b93f948 commit f4a4ae1

3 files changed

Lines changed: 27 additions & 14 deletions

File tree

lib/recorder.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class Recorder extends events.EventEmitter {
8484
constructor(config) {
8585
super(config);
8686
this.globalId = 1;
87+
this.fake = false;
8788
this.cachePath = getCacheDir();
8889
this.db = new Datastore();
8990

lib/requestHandler.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -415,12 +415,14 @@ function getUserReqHandler(userRule, recorder) {
415415
req,
416416
startTime: new Date().getTime()
417417
};
418-
resourceInfoId = recorder.appendRecord(resourceInfo);
418+
if (!recorder.fake) {
419+
resourceInfoId = recorder.appendRecord(resourceInfo);
420+
}
419421
}
420422

421423
try {
422424
resourceInfo.reqBody = reqData.toString(); //TODO: deal reqBody in webInterface.js
423-
recorder && recorder.updateRecord(resourceInfoId, resourceInfo);
425+
recorder && !recorder.fake && recorder.updateRecord(resourceInfoId, resourceInfo);
424426
} catch (e) { }
425427
})
426428

@@ -505,7 +507,7 @@ function getUserReqHandler(userRule, recorder) {
505507

506508
// console.info('===> resbody in record', resourceInfo);
507509

508-
recorder && recorder.updateRecord(resourceInfoId, resourceInfo);
510+
recorder && !recorder.fake && recorder.updateRecord(resourceInfoId, resourceInfo);
509511
})
510512
.catch((e) => {
511513
logUtil.printLog(color.green('Send final response failed:' + e.message), logUtil.T_ERR);
@@ -619,7 +621,9 @@ function getConnectReqHandler(userRule, recorder, httpsServerMgr) {
619621
req,
620622
startTime: new Date().getTime()
621623
};
622-
resourceInfoId = recorder.appendRecord(resourceInfo);
624+
if (!recorder.fake) {
625+
resourceInfoId = recorder.appendRecord(resourceInfo);
626+
}
623627
}
624628
})
625629
.then(() => {
@@ -677,7 +681,7 @@ function getConnectReqHandler(userRule, recorder, httpsServerMgr) {
677681
resourceInfo.resBody = '';
678682
resourceInfo.length = 0;
679683

680-
recorder && recorder.updateRecord(resourceInfoId, resourceInfo);
684+
recorder && !recorder.fake && recorder.updateRecord(resourceInfoId, resourceInfo);
681685
}
682686
})
683687
.catch(co.wrap(function *(error) {
@@ -726,7 +730,9 @@ function getWsHandler(userRule, recorder, wsClient, wsReq) {
726730
req: wsReq,
727731
startTime: new Date().getTime()
728732
});
729-
resourceInfoId = recorder.appendRecord(resourceInfo);
733+
if (!recorder.fake) {
734+
resourceInfoId = recorder.appendRecord(resourceInfo);
735+
}
730736
}
731737

732738
/**
@@ -794,7 +800,7 @@ function getWsHandler(userRule, recorder, wsClient, wsReq) {
794800
};
795801

796802
// resourceInfo.wsMessages.push(message);
797-
recorder && recorder.updateRecordWsMessage(resourceInfoId, message);
803+
recorder && !recorder.fake && recorder.updateRecordWsMessage(resourceInfoId, message);
798804
};
799805

800806
proxyWs.onopen = () => {
@@ -815,7 +821,7 @@ function getWsHandler(userRule, recorder, wsClient, wsReq) {
815821
resourceInfo.resBody = '';
816822
resourceInfo.length = resourceInfo.resBody.length;
817823

818-
recorder && recorder.updateRecord(resourceInfoId, resourceInfo);
824+
recorder && !recorder.fake && recorder.updateRecord(resourceInfoId, resourceInfo);
819825
});
820826

821827
proxyWs.onerror = (e) => {

proxy.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ class ProxyCore extends events.EventEmitter {
9292

9393
// init recorder
9494
this.recorder = config.recorder;
95-
9695
// init request handler
9796
const RequestHandler = util.freshRequire('./requestHandler');
9897
this.requestHandler = new RequestHandler({
@@ -293,13 +292,20 @@ class ProxyServer extends ProxyCore {
293292
* @param {object} [config.webInterface] - config of the web interface
294293
* @param {boolean} [config.webInterface.enable=false] - if web interface is enabled
295294
* @param {number} [config.webInterface.webPort=8002] - http port of the web interface
295+
* @param {boolean} [config.cache=false] - never store cache on disk if cache is false
296296
*/
297297
constructor(config) {
298298
// prepare a recorder
299-
const recorder = new Recorder();
300-
const configForCore = Object.assign({
299+
if (!('cache' in config)) {
300+
config.cache = true;
301+
}
302+
const recorder = config.cache ? new Recorder() : { fake: true };
303+
if (!config.cache && config.webInterface) {
304+
config.webInterface.enable = false;
305+
}
306+
const configForCore = Object.assign(config, {
301307
recorder,
302-
}, config);
308+
});
303309

304310
super(configForCore);
305311

@@ -309,7 +315,7 @@ class ProxyServer extends ProxyCore {
309315
}
310316

311317
start() {
312-
if (this.recorder) {
318+
if (this.recorder && !this.recorder.fake) {
313319
this.recorder.setDbAutoCompact();
314320
}
315321

@@ -333,7 +339,7 @@ class ProxyServer extends ProxyCore {
333339
close() {
334340
const self = this;
335341
// release recorder
336-
if (self.recorder) {
342+
if (self.recorder && !self.recorder.fake) {
337343
self.recorder.stopDbAutoCompact();
338344
self.recorder.clear();
339345
}

0 commit comments

Comments
 (0)