Skip to content

Commit d7f30f0

Browse files
author
halwu(吴浩麟)
committed
feat: add option control page navigate to about:blank to free resources
1 parent ce899df commit d7f30f0

File tree

5 files changed

+20
-47
lines changed

5 files changed

+20
-47
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ see more demo in [unit test](test/index.test.js)
3939
- `script`: `string` is an option param. inject script source to evaluate when page on load
4040
- `renderTimeout`: `number` in ms, `render()` will throw error if html string can't be resolved after `renderTimeout`, default is 5000ms.
4141
- `deviceMetricsOverride`: `object` overrides the values of device screen dimensions for responsive websites, detail use see [here](https://chromedevtools.github.io/devtools-protocol/tot/Emulation/#method-setDeviceMetricsOverride)
42-
- `clearPool`: `boolean` if `true` after render chrome instance will navigate to `about:blank` to free resources. default is true. setting to `false` may increase page load speed when rendering the same website.
42+
- `clearTab`: `boolean` if `true` after render chrome instance will navigate to `about:blank` to free resources. default is `true`. setting to `false` may increase page load speed when rendering the same website.
4343

4444
all request from chrome-render will take with a HTTP header `x-chrome-render:${version}`
4545

index.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export default class ChromeRender {
4848
/**
4949
* `boolean` if `true` after render chrome instance will navigate to `about:blank` to free resources. default is true. setting to `false` may increase page load speed when rendering the same website.
5050
*/
51-
clearPool?: boolean,
51+
clearTab?: boolean,
5252
}): Promise<string>;
5353

5454
/**

index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,10 @@ new Promise((fulfill) => {
157157
referrer: headers['referrer']
158158
});
159159
}).then((html) => {
160-
this.chromePoll.release(client.tabId, params.clearPool);
160+
this.chromePoll.release(client.tabId, params.clearTab);
161161
return Promise.resolve(html);
162162
}).catch((err) => {
163-
this.chromePoll.release(client.tabId, params.clearPool);
163+
this.chromePoll.release(client.tabId, params.clearTab);
164164
return Promise.reject(err);
165165
});
166166
}

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "chrome-render",
3-
"version": "1.3.1",
3+
"version": "1.4.0",
44
"description": "General server render base on chrome",
55
"keywords": [
66
"headless",
@@ -23,7 +23,7 @@
2323
"test": "mocha test"
2424
},
2525
"dependencies": {
26-
"chrome-pool": "^1.1.3"
26+
"chrome-pool": "^1.2.0"
2727
},
2828
"devDependencies": {
2929
"koa": "^2.2.0",

test/index.test.js

+14-41
Original file line numberDiff line numberDiff line change
@@ -84,49 +84,22 @@ describe('#ChromeRender', function () {
8484
await chromeRender.destroyRender();
8585
});
8686

87-
it('#render() proper release', async function () {
88-
this.timeout(15000);
89-
const chromeRender = await ChromeRender.new({
90-
maxTab: 8
91-
});
92-
await chromeRender.render({
93-
url: 'https://gwuhaolin.github.io/redemo/',
94-
useReady: true,
95-
script: `setTimeout(function(){ window.isPageReady=1 }, 1000);`,
96-
renderTimeout: 5000
97-
});
98-
99-
await chromeRender.render({
100-
url: 'https://gwuhaolin.github.io/redemo/',
101-
useReady: true,
102-
script: `setTimeout(function(){ window.isPageReady=1 }, 1000);`,
103-
renderTimeout: 5000
104-
});
105-
await chromeRender.destroyRender();
106-
});
107-
108-
it('#render() proper release', async function () {
87+
it('#render() clearTab=false', async function () {
88+
this.timeout(20000);
10989
const chromeRender = await ChromeRender.new({
110-
maxTab: 8
111-
});
112-
await chromeRender.render({
113-
url: 'https://gwuhaolin.github.io/redemo/?a=1',
114-
useReady: true,
115-
script: `setTimeout(function(){window.isPageReady = 1;}, 1000);`,
116-
renderTimeout: 5000
117-
});
118-
await chromeRender.render({
119-
url: 'https://gwuhaolin.github.io/redemo/?a=2',
120-
useReady: true,
121-
script: `setTimeout(function(){window.isPageReady = 1;}, 1000);`,
122-
renderTimeout: 5000
123-
});
124-
await chromeRender.render({
125-
url: 'https://gwuhaolin.github.io/redemo/?a=3',
126-
useReady: true,
127-
script: `setTimeout(function(){window.isPageReady = 1;}, 1000);`,
128-
renderTimeout: 5000
90+
maxTab: 2
12991
});
92+
let task = [];
93+
for (let i = 0; i < 10; i++) {
94+
task.push(chromeRender.render({
95+
url: `https://gwuhaolin.github.io/redemo/?${i}`,
96+
useReady: true,
97+
script: `setTimeout(function(){window.isPageReady = 1;}, 1000);`,
98+
renderTimeout: 5000,
99+
clearTab: false,
100+
}));
101+
}
102+
await Promise.all(task);
130103
await chromeRender.destroyRender();
131104
});
132105

0 commit comments

Comments
 (0)