Revert "feat: improve performance"

This commit is contained in:
Torsten Dittmann
2024-06-07 00:09:12 +02:00
committed by GitHub
parent 0c7125ce87
commit 9f5fdb8e18
9 changed files with 472 additions and 171 deletions

View File

@@ -1,17 +1,16 @@
import { createApp, fromNodeMiddleware, toNodeListener } from 'h3';
import { createServer } from 'node:http';
import express from 'express';
import compression from 'compression'
import { sitemap } from './sitemap.js'
import { handler } from '../build/handler.js';
import { sitemap } from './sitemap.js';
async function main() {
const port = process.env.PORT || 3000;
const app = createApp();
app.use('/sitemap.xml', await sitemap());
app.use(fromNodeMiddleware(handler));
const server = createServer(toNodeListener(app)).listen(port);
server.addListener('listening', () => {
console.log(`Listening on http://0.0.0.0:${port}`);
const app = express();
app.use(compression());
app.use(await sitemap());
app.use(handler);
app.listen(3000, () => {
console.log('Listening on http://0.0.0.0:3000');
});
}
main();
main();

View File

@@ -1,43 +1,36 @@
import { createRequire } from 'node:module';
import { defineEventHandler, setResponseHeader } from 'h3';
import { createRequire } from 'node:module'
/**
* @returns {Promise<import('h3').EventHandler>}
* @returns {Promise<import('express').RequestHandler>}
*/
export async function sitemap() {
console.info('Preparing Sitemap...');
const manifest = await import('../build/server/manifest.js');
const prerendered = manifest.prerendered;
const file_route_extensions = ['.json', '.xml'];
const routes = [...prerendered, ...collectThreads()].filter(
(route) => !file_route_extensions.some((ext) => route.endsWith(ext))
);
console.info(`Sitemap loaded with ${routes.length} routes!`);
const routes = [
...prerendered,
...collectThreads()
];
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${routes
.map(
(route) => `<url>
${routes.filter(route => !route.endsWith('.json')).map(route => `<url>
<loc>https://appwrite.io${route}</loc>
</url>
`
)
.join('')}
`).join('')}
</urlset>`;
return defineEventHandler((event) => {
setResponseHeader(event, 'Content-Type', 'application/xml');
return sitemap;
});
return async (req, res, next) => {
if (req.url === '/sitemap.xml') {
res.setHeader('Content-Type', 'application/xml');
return res.send(sitemap);
}
next();
}
}
/**
* @returns {string[]}
*/
function collectThreads() {
const threads = createRequire(import.meta.url)('../build/prerendered/threads/data.json');
return threads.map((id) => `/threads/${id}`);
}
return threads.map(id => `/threads/${id}`);
}