Node.js implementation of Stack Exchange's MiniProfiler
Visit http://miniprofiler-demo.herokuapp.com for a live demonstration.
$ npm install miniprofilerYou can hook up your application with any of the following packages are available on npm:
| Name | About | Version |
|---|---|---|
miniprofiler-http | Profile http(s) requests | |
miniprofiler-pg | Profile pg queries | |
miniprofiler-redis | Profile redis calls |
server.js
varexpress=require('express'),miniprofiler=require('miniprofiler'),app=express();app.set('view engine','pug');app.use(miniprofiler.express());app.get('/',function(req,res){req.miniprofiler.step('Step 1',function(){req.miniprofiler.step('Step 2',function(){res.render('index');});});});app.listen(8080);index.pug
doctypehtmlhtmlheadtitleMiniProfilerNode.jsExamplebodyh1HomePage|!{miniprofiler.include()}When visiting localhost:8080, you should see this.
Replace {framework} with koa, express or hapi.
This function returns a framework specific middleware that is responsible for initializing MiniProfiler on each request.
| Property | Default | Description |
|---|---|---|
| enable | Always returns true | function(req, res) => boolean; this function is used to determine if the profiler should be enabled for the current request |
| authorize | Always returns true | function(req, res) => boolean; this function is used to determine if the current request should be able to see the profiling results |
provider is a call for any of the supported providers listed here.
| Property | Default | Description |
|---|---|---|
| storage | InMemoryStorage({max: 100, maxAge: 1000 * 60 * 60 }) | InMemoryStorage or RedisStorage; used to store or fetch a string JSON blob of profiling information |
| ignoredPaths | [ ] | string array ; any request whose url property is in ignoredPaths will not be profiled |
| trivialDurationThresholdMilliseconds | 2.5 | double ; any step lasting longer than this will be considered trivial, and hidden by default |
| popupShowTimeWithChildren | false | boolean ; whether or not to include the "time with children" column |
| popupRenderPosition | left | 'left', 'right', 'bottomLeft' or 'bottomRight' ; which side of the screen to display timings on |
miniprofiler.configure({storage: miniprofiler.storage.InMemoryStorage({lruCacheOptions })}) Refer to lru-cache documentation for lruCacheOptions.
miniprofiler.configure({storage: miniprofiler.storage.RedisStorage(client)}) Where client is an instance of redis.createClient.
