An open API service indexing awesome lists of open source software.

https://github.com/badbatch/cacheability

A utility class to parse, store and print http cache headers.
https://github.com/badbatch/cacheability

cache-control cacheability etag headers http parser

Last synced: 10 months ago
JSON representation

A utility class to parse, store and print http cache headers.

Awesome Lists containing this project

README

          

# cacheability

A utility class to parse, store and print http cache headers.

[![Build and publish](https://github.com/badbatch/cacheability/actions/workflows/build-and-publish.yml/badge.svg)](https://github.com/badbatch/cacheability/actions/workflows/build-and-publish.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![npm version](https://badge.fury.io/js/cacheability.svg)](https://badge.fury.io/js/cacheability)

## Installation

```bash
npm add cacheability
```

## Documentation

### Initialization

The constructor takes either a Headers instance, object literal of header key/values, cache-control header field value
or Cacheability metadata object, parses it, if required, and then stores the result on the Cacheability instance's
metadata property.

```javascript
import { Cacheability } from "cacheability";

const headers = new Headers({
"cache-control": "public, max-age=60",
"content-type": "application/json",
"etag": "33a64df551425fcc55e4d42a148795d9f25f89d4",
});

const cacheability = new Cacheability({ headers });

const { cacheControl, etag, ttl } = cacheability.metadata;
// cacheControl is { maxAge: 60, public: true }
// etag is 33a64df551425fcc55e4d42a148795d9f25f89d4
// ttl is 1516060712991 if Date.now is 1516060501948
```

### Properties

#### metadata

The property holds the Cacheability instance's parsed cache headers data, including cache control directives, etag,
and a derived TTL timestamp.

### Methods

#### checkTTL

The method checks whether the TTL timestamp stored in the Cacheability instance is still valid, by comparing it to the
current timestamp.

```javascript
const cacheability = new Cacheability({ cacheControl: "public, max-age=3" });

// One second elapses...

const isValid = cacheability.checkTTL();
// isValid is true

// Three seconds elapse...

const isStillValid = cacheability.checkTTL();
// isStillValid is false
```

#### printCacheControl

The method prints a cache-control header field value based on the Cacheability instance's metadata. The max-age and/or
s-maxage are derived from the TTL stored in the metadata.

```javascript
const cacheability = new Cacheability({ cacheControl: "public, max-age=60, s-maxage=60" });

// Five seconds elapse...

const cacheControl = cacheability.printCacheControl();
// cacheControl is "public, max-age=55, s-maxage=55"
```

## Changelog

Check out the [features, fixes and more](CHANGELOG.md) that go into each major, minor and patch version.

## License

Cacheability is [MIT Licensed](LICENSE).