Giter VIP home page Giter VIP logo

bluebird-cachify's Introduction

Bluebird Cachify Build Status Gitter

A non-invasive way to cache your Bluebird promises. It leverages lru-cache-plus to cache the results.

Quick Start

var Promise = require('bluebird');
var BluebirdCachify = require('bluebird-cachify')();


// assume you have an instance 'sample' with a function named 'foo' that returns a promise 
BluebirdCachify.cachify(sample, 'foo', 5000); // cache for 5 seconds

sample.foo(10) 
  .then(function (result) {
    return sample.foo(10); // returns cached result
  })

tl; dr

Multiple Caches and Configuration

By default, BluebirdCachify uses a single cache instance to store results. It may be desirable to have multiple caches with different parameters and default TTLs. This can easily be done. Examples:

// using a different namespace
var BluebirdCachify = require('bluebird-cachify')('different namespace');

// setting default options
var BluebirdCachify = require('bluebird-cachify')({max: 1000, maxAge: 8000});

// creating a new namespace with custom options
var BluebirdCachify = require('bluebird-cachify')('namespace2', {max: 1000, maxAge: 8000});

See: lru-cache-plus for possible options and documentation

API

#####require('bluebird-cachify')([String namespace] [, Object options]) -> BluebirdCachify

Creates or returns a BluebirdCachify object for the given namespace. Without the optional namespace the default is returned. Optionally, an options object can be provided to customize the cache. The default options are: {max: 500, maxAge: 3600000} (see: lru-cache-plus)

#####BluebirdCachify.cachify(Object instance, String functionName [, Number ttl])

Caches the given functionName for the given instance. Optionally, pass ttl in milliseconds.

#####instance.function.restore()

Removes caching from the function.

bluebird-cachify's People

Contributors

gschwa avatar

Stargazers

Phil Mander avatar

Watchers

 avatar

bluebird-cachify's Issues

Make work with functions that are not object properties

This is a feature request:
Can you make this work with functions that are not properties of an instance? E.g.

var readFile = Promise.promisify(require("fs").readFile);

BluebirdCachify.cachify(readFile, 5000);

readFile("foo.txt", "utf8").then(function(contents) {
    ...
})

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.