58 lines
2.1 KiB
Markdown
58 lines
2.1 KiB
Markdown
Cache
|
|
-----
|
|
|
|
If you perform a query on an A or AAAA type and it doesn't exist, the cache
|
|
will attempt to lookup a CNAME and then resolve that.
|
|
|
|
The constructor takes an optional object with the following properties:
|
|
|
|
* `store` -- implements the cache store model (optional, default MemoryStore)
|
|
|
|
Methods:
|
|
|
|
* `lookup(question, cb)` -- for a given question check the cache store for
|
|
existence
|
|
* `store(packet)` -- iterates over the resource records in a packet and sends
|
|
them to the cache store
|
|
* `purge()` -- clears the cache store of all entries
|
|
|
|
MemoryStore / Cache store model
|
|
-------------------------------
|
|
|
|
`MemoryStore(opts)` -- An in memory store based on a js object
|
|
|
|
Methods:
|
|
|
|
* `get(domain, key, cb)`
|
|
- `domain` is the holder under which keys will be applied,
|
|
`key` is the subdomain that is being queried for.
|
|
If you `get('example.com', 'www', cb)` you are really asking for `www.example.com`.
|
|
- `cb(err, results)` -- results is an object of types and array of answers
|
|
* `{ 1: [{address: '127.0.0.1', ttl: 300, type: 1, class: 1}] }`
|
|
* `set(domain, key, data, cb)`
|
|
- `domain` is the parent under which this key is stored.
|
|
`key` is the subdomain we are storing, `data` is an object of types with an array of answers.
|
|
* `set('example.com', 'www', {1: [{class:1, type:1, ttl:300, address:'127.0.0.1'}]}, cb)`
|
|
- `cb(err, data)` -- cb merely returns the data that was passed.
|
|
* `delete(domain[, key[, type]], cb)` -- delete all from a domain, a domain and key,
|
|
or a domain a key and a type.
|
|
|
|
Lookup
|
|
------
|
|
|
|
Is a mechanism that given a store performs the common resolution pattern.
|
|
|
|
Given `example.com` previous added to a store:
|
|
|
|
* `www.example.com CNAME foo.bar.example.com.`
|
|
* `*.example.com A 127.0.0.1`
|
|
|
|
A `Lookup(store, 'example.com', {name:'www.example.com', type:1}, cb)`
|
|
will resolve `www` to the CNAME and then search for `foo.bar.example.com` which
|
|
will return no results, and then search for `*.bar.example.com` which will also
|
|
return no results, and ultimately searches for `*.example.com` which will return
|
|
the desired record.
|
|
|
|
Callback will be called with `(err, results)` where results is an array suitable
|
|
for use in `Packet.answer`
|