vibes
This commit is contained in:
parent
80c093b7ba
commit
f72c43a9fa
101 changed files with 2168 additions and 1177 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import express from 'express';
|
||||
import { ScreenshotCache } from './cache.js';
|
||||
import { takeScreenshot, checkWebGL, closeBrowser } from './screenshot.js';
|
||||
import { takeScreenshot, checkWebGL, closeBrowser, initialize } from './screenshot.js';
|
||||
|
||||
const PORT = parseInt(process.env.PORT || '8002', 10);
|
||||
const APP_URL = process.env.APP_URL;
|
||||
|
|
@ -63,7 +63,7 @@ app.get('/screenshot', async (req, res) => {
|
|||
// Check cache first
|
||||
const cached = cache.get(cacheKey);
|
||||
if (cached) {
|
||||
res.setHeader('Content-Type', 'image/png');
|
||||
res.setHeader('Content-Type', 'image/jpeg');
|
||||
res.setHeader('Cache-Control', 'public, max-age=86400');
|
||||
res.setHeader('X-Cache', 'HIT');
|
||||
cached.pipe(res);
|
||||
|
|
@ -75,15 +75,15 @@ app.get('/screenshot', async (req, res) => {
|
|||
const url = `${APP_URL}${pagePath}?${qs}`;
|
||||
|
||||
console.log(`Taking screenshot: ${url}`);
|
||||
const png = await takeScreenshot(url);
|
||||
const jpeg = await takeScreenshot(url);
|
||||
|
||||
// Cache it
|
||||
cache.set(cacheKey, png);
|
||||
cache.set(cacheKey, jpeg);
|
||||
|
||||
res.setHeader('Content-Type', 'image/png');
|
||||
res.setHeader('Content-Type', 'image/jpeg');
|
||||
res.setHeader('Cache-Control', 'public, max-age=86400');
|
||||
res.setHeader('X-Cache', 'MISS');
|
||||
res.send(png);
|
||||
res.send(jpeg);
|
||||
} catch (err) {
|
||||
console.error('Screenshot failed:', err);
|
||||
res.status(500).json({ error: 'Screenshot failed' });
|
||||
|
|
@ -94,6 +94,13 @@ const server = app.listen(PORT, () => {
|
|||
console.log(`Screenshot service listening on port ${PORT}`);
|
||||
console.log(` APP_URL: ${APP_URL}`);
|
||||
console.log(` CACHE_DIR: ${CACHE_DIR}`);
|
||||
|
||||
// Pre-warm browser and populate network cache in background.
|
||||
// The health endpoint is available immediately; screenshot requests
|
||||
// during warm-up will still work (just slower on the first call).
|
||||
initialize(APP_URL).catch((err) => {
|
||||
console.error('Initialization failed:', err);
|
||||
});
|
||||
});
|
||||
|
||||
// Graceful shutdown
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue