https://github.com/nyancodeid/image-cache
NodeJS Image cache with Base64 format
https://github.com/nyancodeid/image-cache
cache callback image-cache nodejs
Last synced: 10 months ago
JSON representation
NodeJS Image cache with Base64 format
- Host: GitHub
- URL: https://github.com/nyancodeid/image-cache
- Owner: nyancodeid
- License: mit
- Created: 2017-06-21T14:59:04.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-09-26T04:52:10.000Z (over 4 years ago)
- Last Synced: 2025-03-25T06:03:53.754Z (11 months ago)
- Topics: cache, callback, image-cache, nodejs
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/image-cache
- Size: 106 KB
- Stars: 20
- Watchers: 2
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# image-cache
[](https://travis-ci.org/nyancodeid/image-cache) [](https://badge.fury.io/js/image-cache)
Powerful image cache for NodeJS
## What is image-cache?
`image-cache` is nodejs module for cache image and serve with base64 format. `image-cache` using
Asynchronous calls for best Performance.
## New
- Compressed options default is `false`
- Library Core now using Javascript Classes
- New syntax and function
- Now `image-cache` using [google proxy cache](https://gist.github.com/coolaj86/2b2c14b1745028f49207) for best caching.
## Installation
to install `image-cache` on your project, you can use NPM and Yarn with the following command,
### NPM
```bash
npm install --save image-cache
```
### Yarn
```bash
yarn add image-cache
```
## Usage
Start using `image-cache`
```javascript
const imageCache = require('image-cache');
```
## API
### setOptions
is a function to replace options from `default options`. this function not returning something.
for using this function, add this code after defining all variable.
```javascript
imageCache.setOptions({
compressed: false
// write your custom options here
});
```
#### API
| Key | Data Type | Default Value | Description |
| :------------- | :----------- | :------------- | :------------- |
| `dir` | `string` | `path.join(__dirname, 'cache/')` | directory root for cached files |
| `compressed` | `boolean` | false | compressing cache output with zlib compressing maybe can make your processing cache little bit longer. for example without compressing is 6-7ms when using compressing is 150-185ms, but your cache file is a litle bit smaller than without compressing |
| `extname` | `string` | `.cache` | file extension for your cache files |
| `googleCache` | `boolean` | `true` | using google cache proxy |
### isCached()
Check is your image already cached or not. this function need 2 params.
```javascript
imageCache.isCached(url, callback);
```
#### Params
| Key | Data Type |
| :------------- | :----------- |
| `url` | `string` |
| `callback` | `function` |
#### Example Using Callback
```javascript
imageCache.isCached(url, (exist) => {
if (exist) {
// do something with cached image
}
});
```
#### Example Using Promise
```javascript
imageCache.isCached(url).then((exist) => {
if (exist) {
// do something with cached image
}
});
```
### isCachedSync()
Check is your image is cached with Synchronous processing. return as `boolean`
#### Example
```javascript
var exists = imageCache.isCachedSync(url);
```
#### API
| Params | Data Type | Description |
| :------------- | :----------- | :------------- |
| `url` | `string` | url of your image |
### getCache
Deprecated
### get()
Get cached image
#### Example
```javascript
imageCache.get(url, (error, image) => {
console.log(image);
// do something with image
});
```
#### API Callback
| Key | Data Type | Description |
| :------------- | :----------- | :------------- |
| `image` | `object` | cache data object |
| `image.error` | `boolean` | cache data error indicator |
| `image.url` | `string` | image source url before transform to base64 format |
| `image.hashFile` | `string` | filename cache |
| `image.timestamp` | `integer` | timestamp when cache created |
| `image.compressed` | `boolean` | is that cache compressed |
| `image.data` | `string` | base64 code, ugly text from your beauty images |
### getCacheSync
Deprecated
### getSync
Get Cached image with Synchronous processing.
#### Example
```javascript
var image = imageCache.getSync('http://domain/path/to/image.png');
```
#### API
API return same like `.get()`
### setCache()
Deprecated
### store()
store new image want to cache, write cache files into `options.dir` Directory. set cache is working with multiple images (Array).
```javascript
imageCache.store(images, callback);
```
#### Params
| Key | Data Type |
| :------------- | :----------- |
| `images` | `array`|`string` |
| `callback` | `function` |
#### Example Using Callback
```javascript
let images = 'https://eladnava.com/content/images/2015/11/js-6.jpg';
imageCache.store(images, function(error) {
console.log(error);
});
```
#### Example Using Promise
```javascript
let images = 'https://eladnava.com/content/images/2015/11/js-6.jpg';
imageCache.store(images).then((result) {
// do something when image stored
}).catch((e) => {
console.log(e)
});
```
#### API Callback and Promise Catch
| Key | Data Type | Description |
| :------------- | :----------- | :------------- |
| `error` | `object` | this error came from `fs.writeFile` |
### flushCache()
Deprecated
### flush()
Delete all cache files on your directory. this code will delete all cache on `options.dir` with extension name same as `options.extname`.
#### Example Using Callback
```javascript
imageCache.flush(function(error, results) {
if (error) {
console.log(error);
} else {
console.log(results);
}
});
```
#### Example Using Promise
```javascript
imageCache.flush().then((results) => {
console.log(results);
}).then((error) => {
console.log(error);
});
```
#### API Callback
| Key | Data Type | Description |
| :------------- | :----------- | :------------- |
| `results` | `object` | details |
| `results.deleted` | `number` | total of deleted files |
| `results.totalFiles` | `number` | total files on directory |
| `results.dir` | `string` | Directory cache images |
### flushSync()
same like `flush` method, but using Synchronous processing.
#### Example
```javascript
var results = imageCache.flushSync();
```
#### API
same like `flush()`
| Key | Data Type | Description |
| :------------- | :----------- | :------------- |
| `results.error` | `boolean` | error statement |
| `results.message` | `string` | error message |
### fetchImage()
Deprecated
### fetch()
`fetch()` is a function to store cache and get cache data in one time. `fetch()` using Async processing for best performace. `fetch()` check your cache file first, if your image is not available in cache folder then this function will get image and return your cache data.
#### Params
| Key | Data Type | Description |
| :------------- | :----------- | :------------- |
| `image` | `string` or `array` | image or array of images |
#### Example
```javascript
var image = "http://path.to/image.jpg";
imageCache.fetch(image).then((images) => {
images.forEach((image) => {
console.log(image);
// { ... }
});
console.log(images);
// [ { ... } ]
}).catch((error) => {
});
```
#### API
| Key | Data Type | Description |
| :------------- | :----------- | :------------- |
| `images` | `array` | cache data array group |
| `image` | `object` | cache data object |
| `image.error` | `boolean` | cache data error indicator |
| `image.url` | `string` | image source url before transform to base64 format |
| `image.hashFile` | `string` | filename cache |
| `image.timestamp` | `integer` | timestamp when cache created |
| `image.compressed` | `boolean` | is that cache compressed |
| `image.data` | `string` | base64 code, ugly text from your beauty images |
| `image.cache` | `string` | cache status is "MISS" or "HIT" |
## What is MISS or HIT mean?
### MISS
when your image is not available in the cache folder, image will be grab from image URL then cached on cache folder.
### HIT
when your image is available in the cache folder, the image will be grab directly from cache folder.