fn-cache

1.0.8 • Public • Published

Function caching in Javascript Build Status Coverage Status npm version

Cache for functions in javascript. Supports CommonJs, AMD, ES6 modules and regular script tag.

Basic usage:

import cache from 'fn-cache';
 
let fetchUsers = cache(200)(() => {
  return fetch('/users');
});

fn-cache implements the decorator pattern. It takes in the cache lifetime (milliseconds) and returns a function. Call that with the function you want to cache and enjoy instant application performance boost! 😎

TIP: Use Infinity time if you want the cache to stay valid forever.

Installation

npm install fn-cache

Usage

fn-cache can cache regular function or class methods. It can be used as a regular function or as a ES7 decorator 💪.
To clear cache, each decorated function is added a clearCache method that when called, clears that function cache.

ES7 - decorator

Cache methods are autobinded

import cache from 'fn-cache';
 
class UserManager {
 
  constructor(usersEndpoint) {
    this.endpoint = usersEndpoint;
  }
 
  // cache will be vaild for 200 milliseconds
  @cache(200)
  getAll() {
    // this.endpoint gets the right value
    // because  getAll is autobinded
    return fetch(this.endpoint).then((response) => {
      return response.json();
    });
  }
}
 
let manager = new UserManager('/users');
 
// calling the cache function works as expected
manager.getAll();
 
// we can clear the cache by calling clearCache
// although its no necessary on most cases.
manager.getAll.clearCache()
ES6
 
import cache from 'fn-cache';
 
function reallyExpensiveOperation(...args) {
  // expensive operations
  return expensiveToCalculateResult;
}
 
// We don't want the cache to be invalidated, thats why we use
// Infinity, if you want to give the cache a lifetime, just pass
// in a {Number} representing milliseconds.
let operation = cache(Infinity)(reallyExpensiveOperation);
ES5 - Node
 
var cache = require('fn-cache');
 
var sumLongArray = cache(Infinity)(function(longArray) {
  return longArray.reduce(function(prev, curr) {
    return prev + curr;
  });
});
ES5 - Browser

Include <script src="lib/fn-cache.js" ></script> in your page

var sqrt = fnCache(Infinity)(Math.sqrt);

Package Sidebar

Install

npm i fn-cache

Weekly Downloads

1

Version

1.0.8

License

MIT

Last publish

Collaborators

  • alejor