Funktionsvarighed
Regler der opdager mønstre, som øger serverless-funktioners udførelsestid.
Disse regler fanger mønstre, der forlænger wall-clock-tiden for dine serverless-funktioner. Kortere funktioner betyder lavere regninger — Vercel fakturerer per GB-sekund udførelsestid.
async-parallel
vercel-doctor/async-parallelOpdager 3 eller flere sekventielle await-sætninger, der ser ud til at være uafhængige — hvilket betyder, at senere awaits ikke refererer til variabler fra tidligere.
Hvorfor det er vigtigt: Sekventielle awaits kører én efter én. Hvis de er uafhængige, kan parallel kørsel med Promise.all() reducere funktionsvarigheden markant.
const users = await db.user.findMany();
const posts = await db.post.findMany();
const comments = await db.comment.findMany();const [users, posts, comments] = await Promise.all([
db.user.findMany(),
db.post.findMany(),
db.comment.findMany(),
]);server-after-nonblocking
vercel-doctor/server-after-nonblockingOpdager console.log(), console.info(), console.warn(), analytics.track(), analytics.identify() eller analytics.page()-kald i server actions (filer med "use server").
Hvorfor det er vigtigt: Logning og analytics-kald blokerer svaret, indtil de er færdige. Ved at pakke dem ind i after() kan svaret afsluttes med det samme, mens arbejdet fortsætter i baggrunden.
"use server";
export const updateUser = async (data: FormData) => {
await db.user.update({ ... });
console.log("User updated");
analytics.track("user_updated");
};"use server";
import { after } from "next/server";
export const updateUser = async (data: FormData) => {
await db.user.update({ ... });
after(() => {
console.log("User updated");
analytics.track("user_updated");
});
};vercel-edge-sequential-await
vercel-doctor/vercel-edge-sequential-awaitOpdager Edge Runtime-filer med 2 eller flere sekventielle await-kald uden Promise.all.
Hvorfor det er vigtigt: Edge-funktioner har strenge udførelsestidsbegrænsninger. Sekventiel I/O spilder dyrebare millisekunder, der kunne paralleliseres.
export const runtime = "edge";
export async function GET() {
const user = await getUser();
const settings = await getSettings();
return Response.json({ user, settings });
}export const runtime = "edge";
export async function GET() {
const [user, settings] = await Promise.all([getUser(), getSettings()]);
return Response.json({ user, settings });
}Last updated on