forked from sugarlabs/musicblocks
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
58 lines (51 loc) · 1.77 KB
/
index.js
File metadata and controls
58 lines (51 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const express = require("express");
const compression = require("compression");
const path = require("path");
const app = express();
// Detect environment (default to development for safety)
const isDev = process.env.NODE_ENV !== "production";
// runtime environment for browser
app.get("/env.js", (req, res) => {
res.type("application/javascript");
res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate");
res.setHeader("Pragma", "no-cache");
res.setHeader("Expires", "0");
res.setHeader("Surrogate-Control", "no-store");
res.send(
`window.MB_ENV=${JSON.stringify(process.env.NODE_ENV || "development")};` +
`window.MB_IS_DEV=${JSON.stringify(isDev)};`
);
});
// Enable compression for all responses
app.use(
compression({
level: 9,
threshold: 0
})
);
// Environment-aware static file serving
app.use(
express.static(path.join(__dirname), {
// Disable caching in development, enable in production
maxAge: isDev ? 0 : "1h",
etag: isDev ? false : true,
lastModified: isDev ? false : true,
// Set explicit no-cache headers in development
setHeaders: (res, filePath) => {
if (isDev) {
res.setHeader(
"Cache-Control",
"no-store, no-cache, must-revalidate, proxy-revalidate"
);
res.setHeader("Pragma", "no-cache");
res.setHeader("Expires", "0");
res.setHeader("Surrogate-Control", "no-store");
}
}
})
);
const PORT = process.env.PORT || 3000;
app.listen(PORT, "127.0.0.1", () => {
console.log(`Music Blocks running at http://127.0.0.1:${PORT}/`);
console.log("Compression enabled");
});