@lidofinance/next-cache-files-middleware
v0.48.0
Published
Next middleware for cache files
Downloads
1,447
Readme
@lidofinance/next-cache-files-middleware
Next.js middleware to add cache-control headers to file requests You can read about middleware there
Installation
yarn add @lidofinance/next-cache-files-middleware
.
Getting started
Usage
- Create file middleware.ts in root folder
- Put the code from the example in this file
- Update configuration constants if necessary
About constant config
The matcher values need to be constants so they can be statically analyzed at build-time.
Dynamic values such as variables will be ignored.
Therefore, you need to manually register the specified paths from the example.
Example there exampleMiddlewareConfig
import { cacheControlMiddlewareFactory } from '@lidofinance/next-cache-files-middleware'
export const middleware = cacheControlMiddlewareFactory()
export const config = {
// paths where use middleware
matcher: ['/manifest.json', '/favicon:size*'],
}
export default middleware
Use with your own allowed list
import {
cacheControlMiddlewareFactory,
CacheAllowedItem,
CACHE_FILE_DEFAULT_HEADERS
} from '@lidofinance/next-cache-files-middleware'
// cache allowed list
const SomePathConfig: CacheAllowedItem[] = [{
{ path: /^\/someStaticFileRegExp.json?$/, headers: CACHE_FILE_DEFAULT_HEADERS },
{ path: '/someStaticFileString.json', headers: CACHE_FILE_DEFAULT_HEADERS },
}]
// Use allowed list
export const middleware = cacheControlMiddlewareFactory(SomePathConfig)
// Note: The matcher values need to be constants so they can be statically analyzed at build-time.
// Dynamic values such as variables will be ignored.
export const config = {
// paths where use middleware
matcher: ['/manifest.json', '/favicon:size*', '/someStaticFile.json']
}
export default middleware
Use with your own middleware
import {
cacheControlMiddlewareFactory,
CacheAllowedItem,
CACHE_FILE_DEFAULT_HEADERS
} from '@lidofinance/next-cache-files-middleware'
// cache allowed list
const SomePathConfig: CacheAllowedItem[] = [{
{ path: /^\/someStaticFileRegExp.json?$/, headers: CACHE_FILE_DEFAULT_HEADERS },
{ path: '/someStaticFileString.json', headers: CACHE_FILE_DEFAULT_HEADERS },
}]
// Use allowed list
export const cacheControlMiddleware = cacheControlMiddlewareFactory(SomePathConfig)
// or
export const cacheControlMiddleware = cacheControlMiddlewareFactory()
// use only for cache files
const middleware = (req: NextRequest): NextResponse => {
// add cache control middleware
const response = cacheControlMiddleware(req);
// some code
return response;
}
// or use wrapper
export const middleware = cacheControlMiddlewareWrapper(SomePathConfig)((req, res) => {
// some code
return res;
});
export const config = {
// paths where use middleware
matcher: ['/manifest.json', '/favicon:size*', '/someUrl'],
};
export default middleware;