🗿
Templating & Static Files

Serving Static Files

express.static Middleware
💡 express.static EK SELF-SERVICE COUNTER hai — CSS, images aur JS files ke liye alag-alag route likhne ki zaroorat nahi, folder khol do aur log khud utha lein.

express.static(folder) EK folder ko publicly serve kar deta hai. "public/style.css" file "/style.css" URL par milegi — folder ka naam URL mein NAHI aata, jab tak tum mount path na do.

Production mein caching options important hain: maxAge se browser caching, aur immutable flag hashed filenames ke liye. Static middleware ko routes se PEHLE mount karna performance ke liye behtar hai.

app.use(express.static("public"));                 // /style.css
app.use("/assets", express.static("public"));      // /assets/style.css

app.use(express.static("public", {
  maxAge: "1d", etag: true,
}));
🗿
express.static EK SELF-SERVICE COUNTER hai — CSS, images aur JS files ke liye alag-alag route likhne ki zaroorat nahi, folder khol do aur log khud utha lein.
1 / 2
⚡ Quick Recap
  • express.static(folder) poora folder public serve kar deta hai
  • Folder ka naam URL mein nahi aata, mount path do to prefix milta hai
  • maxAge/etag se caching, aur folder mein kabhi secrets mat rakho
Is page mein (2 subtopics)

express.static() ko kai baar call kiya ja sakta hai — Express folders ko ORDER mein dhoondhta hai aur pehli milne waali file serve kar deta hai. Virtual prefix dene se URLs saaf rehte hain aur actual folder structure chhupa rehta hai.

app.use(express.static("public"));
app.use(express.static("uploads"));            // fallback folder
app.use("/static", express.static("public"));  // /static/logo.png

maxAge browser ko batata hai ki file kitni der cache karni hai. Hashed filenames (app.9f2c1.js) ke saath immutable flag safe hai kyunki content badalne par naam bhi badal jaata hai. Bade traffic par static files Nginx ya CDN se serve karna Express se behtar hai.

app.use(express.static("public", {
  maxAge: "365d", immutable: true, etag: true, index: false,
}));