Skip to content

Commit 4df196e

Browse files
committed
optimization: skip low priority request fetch
1 parent ebb91af commit 4df196e

2 files changed

Lines changed: 46 additions & 1 deletion

File tree

src/util/recorder.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,10 @@ export class Recorder extends EventEmitter {
232232
});
233233

234234
await cdp.send("Fetch.enable", {
235-
patterns: [{ urlPattern: "*", requestStage: "Response" }],
235+
patterns: [
236+
{ urlPattern: "*", requestStage: "Response" },
237+
{ requestStage: "Request", resourceType: "Fetch" },
238+
],
236239
});
237240

238241
// Response
@@ -668,6 +671,14 @@ export class Recorder extends EventEmitter {
668671

669672
let continued = false;
670673

674+
// response is either responseStatusCode or responseErrorReason are set
675+
const isResponse = responseStatusCode || responseErrorReason;
676+
677+
if (!isResponse && networkId) {
678+
await this.handleFetchRequest(networkId, requestId, cdp);
679+
return;
680+
}
681+
671682
try {
672683
if (
673684
responseStatusCode &&
@@ -709,6 +720,37 @@ export class Recorder extends EventEmitter {
709720
}
710721
}
711722

723+
async handleFetchRequest(
724+
networkId: string,
725+
requestId: string,
726+
cdp: CDPSession,
727+
) {
728+
const reqresp = this.pendingReqResp(networkId, true);
729+
730+
if (
731+
reqresp &&
732+
reqresp.priority === "Low" &&
733+
reqresp.resourceType === "fetch"
734+
) {
735+
if (await this.isDupeFetch(reqresp)) {
736+
this.removeReqResp(networkId);
737+
await cdp.send("Fetch.failRequest", {
738+
requestId,
739+
errorReason: "Aborted",
740+
});
741+
logger.debug(
742+
"Aborted dupe low-priority fetch in request phase",
743+
{ url: reqresp.url },
744+
"recorder",
745+
);
746+
return false;
747+
}
748+
}
749+
750+
await cdp.send("Fetch.continueRequest", { requestId });
751+
return true;
752+
}
753+
712754
async handleFetchResponse(
713755
params: Protocol.Fetch.RequestPausedEvent,
714756
cdp: CDPSession,

src/util/reqresp.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ export class RequestResponseInfo {
4343
postData?: string;
4444
hasPostData: boolean = false;
4545

46+
priority?: string;
47+
4648
// content-encoding is preserved, eg. payload is still encoded
4749
cePreserved = false;
4850

@@ -127,6 +129,7 @@ export class RequestResponseInfo {
127129
if (resourceType) {
128130
this.resourceType = resourceType.toLowerCase();
129131
}
132+
this.priority = request.initialPriority;
130133
}
131134

132135
fillResponse(response: Protocol.Network.Response, resourceType?: string) {

0 commit comments

Comments
 (0)