dns-cached
Version:
DNS Cache for Node.js
85 lines (61 loc) • 2.18 kB
Markdown
## dns-cached
#### Caching DNS Responses using Memoization technique.
[](https://travis-ci.org/vivek-26/dns-cached)
[](https://coveralls.io/github/vivek-26/dns-cached?branch=master)
## Installation
`npm install dns-cached`
## Example
```js
const dnsCached = require('dns-cached');
const dns = require('dns');
const util = require('util');
const cache = dnsCached(5, { maxSize: 500 });
cache.overrideMethods('resolve'); /* Override/Memoize DNS Resolve */
const dnsResolve = util.promisify(dns.resolve);
async function run() {
console.log('resolve("google.com")');
for (let i = 0; i < 3; i++) {
console.time('resolve');
console.log('IP: ', await dnsResolve('google.com'));
console.timeEnd('resolve');
}
}
run().catch(console.error);
cache.flush(); /* Clear all timers */
```
```
% node index.js
resolve("google.com")
IP: [ '172.217.161.14' ]
resolve: 47.908ms
IP: [ '172.217.161.14' ]
resolve: 1.664ms
IP: [ '172.217.161.14' ]
resolve: 0.173ms
```
## Usage
```js
const dnsCached = require('dns-cached');
/**
* dnsCached(ttl, { maxSize })
* ttl --> Time to live in minutes. Default: 1
* maxSize --> Maximum number of items to store in cache. Default: 1000
*/
const cache = dnsCached(5, { maxSize: 500 });
/* Override/Memoize all dns methods */
cache.overrideMethods();
/* Override/Memoize a single dns method */
cache.overrideMethods('lookup');
/* Override/Memoize a list of dns methods */
cache.overrideMethods(['lookup', 'resolve']);
/* Flushing cache (if needed) */
cache.flush();
```
## Docs
[Click here](https://vivek-26.github.io/dns-cached/) to view project documentation.
## Running tests
`npm test` or `npm run test`
## Versioning
[SemVer](https://semver.org/) is used for versioning. For the versions available, see the [tags](https://github.com/vivek-26/dns-cached/tags) on this repository.
## License
This project is licensed under the `MIT License` - see the [LICENSE](https://github.com/vivek-26/dns-cached/blob/master/LICENSE) file for details.