This plugin for Payload CMS adds a cache layer to API endpoints. The cache is based on the combination of the user's collection and the original URL.
- Payload version
1.0.19or higher is required - A Redis instance is required
To install the plugin, run one of the following commands:
yarn add @aengz/payload-redis-cacheor
npm install @aengz/payload-redis-cacheYou also need to install the redis package if it is not already installed:
yarn add redisor
npm install redisTo use the plugin, add it to the Payload config as follows:
import { buildConfig } from 'payload/config';
import { cachePlugin } from '@aengz/payload-redis-cache'
const config = buildConfig({
// your config here
plugins: [
cachePlugin({
excludedCollections: ['users'],
// excludedGlobals: ['myglobal']
})
]
})Add the initializer function in server.ts
import { cachePlugin } from '@aengz/payload-redis-cache'
...
initRedis({
redisUrl: process.env.REDIS_URI
})| Option | Type | Description |
|---|---|---|
redisUrl * |
string |
Redis instance's url. |
redisNamespace |
string |
Choose the prefix to use for cache redis keys. Defaults to payload. |
redisIndexesName |
string |
Choose the index key for cache redis indexes. Defaults to payload-cache-index. |
excludedCollections |
string[] |
An array of collection names to be excluded. |
excludedGlobals |
string[] |
An array of globals names to be excluded. |
includedPaths |
string[] |
An array of custom routes to be included. |
A * denotes that the property is required.
This package provides utility functions for managing the cache. Here's an example of how to use the invalidateCache function:
import { invalidateCache } from '@aengz/payload-redis-cache'
...
invalidateCache()There is a development environment in the /dev directory of the repository. To use it, create a new .env file in the /dev directory using the example .env.example file as a reference:
cd dev
cp .env.example .envBefore using the plugin in the development environment, the package needs to be built. To build the library, run one of the following commands:
Build the lib using:
yarn dev:buildor
npm run dev:buildTo run the development environment, use the following command:
yarn devor
npm run devTo run the test suite, use one of the following commands:
yarn testor
npm run test