You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Mar 11, 2025. It is now read-only.
Creating new phantom instances with phantom.create() can be slow. If
you are frequently creating new instances and destroying them, as a
result of HTTP requests for example, this module can help by keeping a
pool of phantom instances alive and making it easy to re-use them across
requests.
constcreatePhantomPool=require('phantom-pool')// Returns a generic-pool instanceconstpool=createPhantomPool({max: 10,// defaultmin: 2,// default// how long a resource can stay idle in pool before being removedidleTimeoutMillis: 30000,// default.// maximum number of times an individual resource can be reused before being destroyed; set to 0 to disablemaxUses: 50,// default// function to validate an instance prior to use; see https://github.com/coopernurse/node-pool#createpoolvalidator: ()=>Promise.resolve(true),// defaults to always resolving true// validate resource before borrowing; required for `maxUses and `validator`testOnBorrow: true,// default// For all opts, see opts at https://github.com/coopernurse/node-pool#createpoolphantomArgs: [['--ignore-ssl-errors=true','--disk-cache=true'],{logLevel: 'debug',}],// arguments passed to phantomjs-node directly, default is `[]`. For all opts, see https://github.com/amir20/phantomjs-node#phantom-object-api})// Automatically acquires a phantom instance and releases it back to the// pool when the function resolves or throwspool.use(async(instance)=>{constpage=awaitinstance.createPage()conststatus=awaitpage.open('https://google.com',{operation: 'GET'})if(status!=='success'){thrownewError('cannot open google.com')}constcontent=awaitpage.property('content')returncontent}).then((content)=>{console.log(content)})// Destroying the pool:pool.drain().then(()=>pool.clear())// For more API doc, see https://github.com/coopernurse/node-pool#generic-pool
Security
When using phantom-pool, you should be aware that the phantom instance
you are getting might not be in a completely clean state. It could have
browser history, cookies or other persistent data from a previous use.
If that is an issue for you, make sure you clean up any sensitive data
on the phantom instance before returning it to the pool.