router.get('/sitemap.xml', function(req, res) { res.header('Content-Type', 'application/xml'); res.header('Content-Encoding', 'gzip'); if (req.app.locals.sitemap) { res.send(req.app.locals.sitemap); return; } try { const hostname = 'https://' + req.app.locals.config.domain; const smStream = new SitemapStream({ hostname }); const pipeline = smStream.pipe(createGzip()); Page.getByRange(0, 1000, pages => { pages.forEach(page => { smStream.write({ url: `/page/` + page.link }); }); streamToPromise(pipeline).then(sm => (req.app.locals.sitemap = sm)); smStream.end(); pipeline.pipe(res).on('error', e => { throw e; }); }); } catch (e) { console.error(e); res.status(500).end(); } });