mead-plugin-result-cache v2.0.1
mead-plugin-result-cache
Caches the result of transformations. Pluggable storage implementation.
Installation
npm install --save mead-plugin-result-cacheUsage
Your mead configuration file (mead --config <path-to-config.js>):
const resultCache = require('mead-plugin-result-cache')
module.exports = {
// Load the plugin and specify configuration
plugins: [
resultCache({
storage: inMemoryStorage,
logger: console
})
]
}Storage adapters
The storage takes an object with a read and a write function, each of which returns a promise.
A super-naive, in-memory implementation of this pattern (which should obviously never ever be used) looks something like this:
const cache = {}
const read = ({urlPath, paramsHash}) => {
const cacheKey = `${urlPath}-${paramsHash}`
return cache[cacheKey]
}
const write = ({urlPath, paramsHash, headers, body}) => {
const cacheKey = `${urlPath}-${paramsHash}`
cache[cacheKey] = {headers, body}
return true
}read(options)
Receives an options object containing the following properties:
urlPath- Request path without query string./foo/bar.jpg?w=200would seturlPathtofoo/bar.jpg.paramsHash- A hashed value of the sorted query parametersqueryParams- The query parameters used to transform this image
Returns a promise (or a plain value) which resolves to an object containing:
headers- HTTP headers for the responsebody- Body of the response. Can be either aBufferor aReadableStream.
If the promise is resolved with a falsey value, a cache miss is inferred and will trigger normal resizing. Rejected promises are logged using the passed logger.
write(options)
Receives an options object containing the following properties:
urlPath- Request path without query string./foo/bar.jpg?w=200would seturlPathtofoo/bar.jpg.paramsHash- A hashed value of the sorted query parametersqueryParams- The query parameters used to transform this imageheaders- HTTP headers for the responsebody- Body of the response, as aBuffer.
Returns a promise, return value is not used. Rejected promises are logged using the passed logger.
Logger
The logger parameter takes an object containg logging methods that corresponds to Log4j console methods (console.error, console.warn, console.info, console.debug, console.trace). Defaults to console.
Cache hit hint
You can set the includeHitHeaderHint parameter to true in order for the plugin to set a X-Result-Cache header on responses that hit the cache. Note that this will only be set on hits, not on misses.
License
MIT-licensed. See LICENSE.