From cd4cb177e6e35f69832304366c6f9df96600fb9e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 29 Jul 2019 15:20:36 +0200 Subject: [PATCH] Improve static files cache --- server/controllers/client.ts | 16 +++++++++------- server/controllers/static.ts | 4 ++-- server/initializers/constants.ts | 7 +++++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/server/controllers/client.ts b/server/controllers/client.ts index 18b8b58e9..51f610afa 100644 --- a/server/controllers/client.ts +++ b/server/controllers/client.ts @@ -1,7 +1,7 @@ import * as express from 'express' import { join } from 'path' import { root } from '../helpers/core-utils' -import { ACCEPT_HEADERS, STATIC_MAX_AGE } from '../initializers/constants' +import { ACCEPT_HEADERS, STATIC_MAX_AGE, STATIC_PATHS } from '../initializers/constants' import { asyncMiddleware, embedCSP } from '../middlewares' import { buildFileLocale, getCompleteLocale, is18nLocale, LOCALE_FILES } from '../../shared/models/i18n/i18n' import { ClientHtml } from '../lib/client-html' @@ -10,7 +10,6 @@ import { logger } from '../helpers/logger' const clientsRouter = express.Router() const distPath = join(root(), 'client', 'dist') -const assetsImagesPath = join(root(), 'client', 'dist', 'assets', 'images') const embedPath = join(distPath, 'standalone', 'videos', 'embed.html') const testEmbedPath = join(distPath, 'standalone', 'videos', 'test-embed.html') @@ -42,13 +41,14 @@ const staticClientFiles = [ ] for (const staticClientFile of staticClientFiles) { const path = join(root(), 'client', 'dist', staticClientFile) - clientsRouter.use('/' + staticClientFile, express.static(path, { maxAge: STATIC_MAX_AGE })) -} -clientsRouter.use('/client', express.static(distPath, { maxAge: STATIC_MAX_AGE })) -clientsRouter.use('/client/assets/images', express.static(assetsImagesPath, { maxAge: STATIC_MAX_AGE })) + clientsRouter.get('/' + staticClientFile, (req: express.Request, res: express.Response) => { + res.sendFile(path, { maxAge: STATIC_MAX_AGE.SERVER }) + }) +} clientsRouter.use('/client/locales/:locale/:file.json', serveServerTranslations) +clientsRouter.use('/client', express.static(distPath, { maxAge: STATIC_MAX_AGE.CLIENT })) // 404 for static files not found clientsRouter.use('/client/*', (req: express.Request, res: express.Response) => { @@ -74,7 +74,9 @@ async function serveServerTranslations (req: express.Request, res: express.Respo if (is18nLocale(locale) && LOCALE_FILES.indexOf(file) !== -1) { const completeLocale = getCompleteLocale(locale) const completeFileLocale = buildFileLocale(completeLocale) - return res.sendFile(join(__dirname, `../../../client/dist/locale/${file}_${completeFileLocale}.json`)) + + const path = join(__dirname, `../../../client/dist/locale/${file}_${completeFileLocale}.json`) + return res.sendFile(path, { maxAge: STATIC_MAX_AGE.SERVER }) } return res.sendStatus(404) diff --git a/server/controllers/static.ts b/server/controllers/static.ts index af7de562a..4296183a0 100644 --- a/server/controllers/static.ts +++ b/server/controllers/static.ts @@ -68,13 +68,13 @@ staticRouter.use( const thumbnailsPhysicalPath = CONFIG.STORAGE.THUMBNAILS_DIR staticRouter.use( STATIC_PATHS.THUMBNAILS, - express.static(thumbnailsPhysicalPath, { maxAge: STATIC_MAX_AGE, fallthrough: false }) // 404 if the file does not exist + express.static(thumbnailsPhysicalPath, { maxAge: STATIC_MAX_AGE.SERVER, fallthrough: false }) // 404 if the file does not exist ) const avatarsPhysicalPath = CONFIG.STORAGE.AVATARS_DIR staticRouter.use( STATIC_PATHS.AVATARS, - express.static(avatarsPhysicalPath, { maxAge: STATIC_MAX_AGE, fallthrough: false }) // 404 if the file does not exist + express.static(avatarsPhysicalPath, { maxAge: STATIC_MAX_AGE.SERVER, fallthrough: false }) // 404 if the file does not exist ) // We don't have video previews, fetch them from the origin instance diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 40f86a30d..5fe7d416c 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -500,7 +500,10 @@ const STATIC_DOWNLOAD_PATHS = { } // Cache control -let STATIC_MAX_AGE = '2h' +let STATIC_MAX_AGE = { + SERVER: '2h', + CLIENT: '30d' +} // Videos thumbnail size const THUMBNAILS_SIZE = { @@ -604,7 +607,7 @@ if (isTestInstance() === true) { REMOTE_SCHEME.HTTP = 'http' REMOTE_SCHEME.WS = 'ws' - STATIC_MAX_AGE = '0' + STATIC_MAX_AGE.SERVER = '0' ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE = 2 ACTIVITY_PUB.ACTOR_REFRESH_INTERVAL = 10 * 1000 // 10 seconds -- 2.25.1