Maintenance page usage example
When we do a release, promotion, event, etc. That might bring more attention than usual to a page; Its a good idea to have a backup plan that includes showing a different page to the users in case something fails. If this page receives a lot of traffic, we can use the edge, a previously generated static page and a redis cache to give the users, dynamic at the speed of static.
This will let us change the flow of the traffic quickly in case something fails.
How to do it?
You can add a _middleware.js
file inside a big-promo
folder with a index.js
file for the page. Inside _middleware.js
you can do something like this:
import { NextResponse } from 'next/server'
export async function middleware(req) {
// Clone the URL
const url = req.nextUrl.clone()
// Get value from a redis cache
const isInMaintenanceMode = api.get('...')
// If is in maintenance mode, point the url pathname to the maintenance page
if (isInMaintenanceMode) {
url.pathname = `/maintenance`
// Rewrite to the url
return NextResponse.rewrite(url)
}
}
If you need help with how to use a redis cache with edge functions you can see this example. If you want to see how this maintenance page works, check the /big-promo
route.