diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 6bd69b26b..6ed862933 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.20.36", + "version": "2.20.37", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", @@ -20,6 +20,7 @@ "js-yaml": "^4.0.0", "koa": "^2.13.1", "koa-body": "^4.2.0", + "koa-compress": "^5.0.1", "koa-proxies": "^0.11.0", "koa-router": "^10.0.0", "koa-static-cache": "^5.1.3", diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 35f43f887..bbc95c7ee 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -10,6 +10,7 @@ import { import { ObjectID } from 'mongodb'; import Koa, { Context } from 'koa'; import Body from 'koa-body'; +import Compress from 'koa-compress'; import Router from 'koa-router'; import proxy from 'koa-proxies'; import cache from 'koa-static-cache'; @@ -230,15 +231,26 @@ export async function prepare() { changeOrigin: true, rewrite: (p) => p.replace('/fs', ''), })); + app.use(Compress()); if (argv.public) { app.use(cache(argv.public, { maxAge: 0, })); } else { app.use(cache(resolve(os.tmpdir(), 'hydro', 'public'), { - maxAge: 365 * 24 * 60 * 60, + maxAge: 30 * 24 * 60 * 60, })); } + if (argv.debug) { + app.use(async (ctx: Context, next: Function) => { + const startTime = new Date().getTime(); + await next(); + const endTime = new Date().getTime(); + if (ctx.nolog || ctx.response.headers.nolog) return; + ctx._remoteAddress = ctx.request.ip; + logger.debug(`${ctx.request.method} ${ctx.request.path} ${ctx.response.status} ${endTime - startTime}ms ${ctx.response.length}`); + }); + } app.use(Body({ multipart: true, formidable: { @@ -786,16 +798,6 @@ export function Connection( // TODO use postInit? export function start() { const port = system.get('server.port'); - if (argv.debug) { - app.use(async (ctx: Context, next: Function) => { - const startTime = new Date().getTime(); - await next(); - const endTime = new Date().getTime(); - if (ctx.response.headers.nolog) return; - ctx._remoteAddress = ctx.request.ip; - logger.debug(`${ctx.request.method} ${ctx.request.path} ${ctx.response.status} ${endTime - startTime}ms ${ctx.response.length}`); - }); - } app.use(router.routes()).use(router.allowedMethods()); server.listen(argv.port || port); logger.success('Server listening at: %d', argv.port || port);