https://github.com/arlac77/etag-cache-leveldb
etag cache based on leveldb
https://github.com/arlac77/etag-cache-leveldb
Last synced: about 1 year ago
JSON representation
etag cache based on leveldb
- Host: GitHub
- URL: https://github.com/arlac77/etag-cache-leveldb
- Owner: arlac77
- License: 0bsd
- Created: 2022-05-22T11:39:16.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2025-05-08T18:06:48.000Z (about 1 year ago)
- Last Synced: 2025-05-08T19:53:58.989Z (about 1 year ago)
- Language: JavaScript
- Size: 1.67 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.npmjs.com/package/etag-cache-leveldb)
[](https://spdx.org/licenses/0BSD.html)
[](https://typescriptlang.org)
[](https://bundlejs.com/?q=etag-cache-leveldb)
[](https://npmjs.org/package/etag-cache-leveldb)
[](https://github.com/arlac77/etag-cache-leveldb/issues)
[](https://actions-badge.atrox.dev/arlac77/etag-cache-leveldb/goto)
[](https://github.com/prettier/prettier)
[](http://commitizen.github.io/cz-cli/)
[](https://snyk.io/test/github/arlac77/etag-cache-leveldb)
[](https://coveralls.io/github/arlac77/etag-cache-leveldb)
# etag-cache-leveldb
etag cache based on leveldb
# example
```js
import levelup from "levelup";
import leveldown from "leveldown";
import { ETagCacheLevelDB } from "etag-cache-leveldb";
const someDirectory = "/tmp";
const db = await levelup(leveldown(someDirectory));
const cache = new ETagCacheLevelDB(db);
const url = "https://api.github.com/";
const response = await fetch(url);
await cache.storeResponse(response);
// later
const headers = {};
await cache.addHeaders(url, headers); // fill in etag header
const responseWithETag = await fetch(url, { headers });
const cachedResponse = await cache.loadResponse(responseWithETag);
```
# API
### Table of Contents
* [ETagCacheLevelDB](#etagcacheleveldb)
* [Parameters](#parameters)
* [addHeaders](#addheaders)
* [Parameters](#parameters-1)
* [statistics](#statistics)
* [storeResponse](#storeresponse)
* [Parameters](#parameters-2)
* [loadResponse](#loadresponse)
* [Parameters](#parameters-3)
* [rawTagData](#rawtagdata)
* [Parameters](#parameters-4)
## ETagCacheLevelDB
Stores etags and bodies into leveldb.
Reconstructs response with body if etag or url matches.
Will store in the cache:
url : etag
etag : body
### Parameters
* `db`
### addHeaders
Adds the "If-None-Match" header if etag is found for the url.
#### Parameters
* `url` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [URL](https://developer.mozilla.org/docs/Web/API/URL/URL))**
* `headers` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)>** true if etag was found in cache and header has been added
### statistics
Deliver statisics data.
Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
### storeResponse
Stores response in the cache.
Two entries are stored:
* url : etag
* etag : body
#### Parameters
* `response` **[Response](https://developer.mozilla.org/docs/Web/Guide/HTML/HTML5)** as produced by fetch
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\**
### loadResponse
Constructs a new Response feed from the cache if a matching etag is found in the cache.
#### Parameters
* `response` **[Response](https://developer.mozilla.org/docs/Web/Guide/HTML/HTML5)** as provided by fetch
Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Response](https://developer.mozilla.org/docs/Web/Guide/HTML/HTML5)>**
## rawTagData
Strips away etag flags (weak and the like)
### Parameters
* `etag` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | null)**
Returns **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** raw etag