orq - Observable Request Queue
HTTP Request Queue Optimized for Web Workers.
Features
- TTL cache
- RESTful cache policy
- Cancelable requests
- Duplicate request elimination
- Works with Web Workers
- Platform independent
Usage
worker.js
const fiveMinutes = 300000const applyCachePolicy = const cache =
main.js
const orqWorker = 'worker.js' const orq =
Featrues in detail
TTL cache
RESTful cache policy
⚠️ Pseudo code ahead
orq // network call made, will now be served from cacheorq // invalidates /fish/* and /fish cachesorq // another network call is made, since cache was invalidated before
Cancelable requests
const requestSub = orq
By default all requests are cancelable except GET
requests. The reasoning is, that the user might request the same resource again, at which point the response can be served from cache. So that's why we have to pass the option explicitly in the above GET
request.
Duplicate request elimination
orq // Starts network call from workerorq // Doesn't start another network call, since the first hasn't been completed. Instead the result of the first will be served to this request too.
Platform independent
The request
implementation isn't implemented by orq
itself. So you may write your own. For example by wrapping the node internal http
/https
modules. orq
only uses a subset of the worker API. You could easily wrap the node cluster module to provide a worker like API. Those wrapped node master/worker can then be passed to orq
mkInterface
and mkReceiver
. See test helpers to see how this could be done.
TODO
- update deps
- write @orq/superagent
- cannot add type constraints on request and response bodies
- cache policy should limit cache item size
Developed at Vimcar.