const SIX_MONTHS_IN_SECONDS = 15552000;

const STATIC_ASSET_PATHS = [
  '/public/font/font-v1.css',
  '/public/font/v1/300.woff',
  '/public/font/v1/300i.woff',
  '/public/font/v1/400.woff',
  '/public/font/v1/400i.woff',
  '/public/font/v1/700.woff',
  '/public/font/v1/700i.woff',
  '/public/favicon.png',
  '/public/img/busy.gif',
  '/public/img/fileRenderPlaceholder.png',
  '/public/img/gerbil-happy.png',
  '/public/img/gerbil-sad.png',
  '/public/img/placeholder.png',
  '/public/img/placeholderTx.gif',
  '/public/img/thumbnail-broken.png',
  '/public/img/thumbnail-missing.png',
  '/public/img/total-background.png',
];

async function redirectMiddleware(ctx, next) {
  const {
    request: { url },
  } = ctx;

  if (STATIC_ASSET_PATHS.includes(url) || (url.startsWith('/public/ui-') && url.endsWith('.js'))) {
    ctx.set('Cache-Control', `public, max-age=${SIX_MONTHS_IN_SECONDS}`);
  }

  return next();
}

module.exports = redirectMiddleware;

const SIX_MONTHS_IN_SECONDS = 15552000;

const STATIC_ASSET_PATHS = [
  '/public/font/font-v1.css',
  '/public/font/v1/300.woff',
  '/public/font/v1/300i.woff',
  '/public/font/v1/400.woff',
  '/public/font/v1/400i.woff',
  '/public/font/v1/700.woff',
  '/public/font/v1/700i.woff',
  '/public/favicon.png',
  '/public/img/busy.gif',
  '/public/img/fileRenderPlaceholder.png',
  '/public/img/gerbil-happy.png',
  '/public/img/gerbil-sad.png',
  '/public/img/placeholder.png',
  '/public/img/placeholderTx.gif',
  '/public/img/thumbnail-broken.png',
  '/public/img/thumbnail-missing.png',
  '/public/img/total-background.png',
];

async function redirectMiddleware(ctx, next) {
  const {
    request: { url },
  } = ctx;

  const HASHED_JS_REGEX = /^\/public\/.*[a-fA-F0-9]{12}\.js$/i;

  if (STATIC_ASSET_PATHS.includes(url) || HASHED_JS_REGEX.test(url)) {
    ctx.set('Cache-Control', `public, max-age=${SIX_MONTHS_IN_SECONDS}`);
  }

  return next();
}

module.exports = redirectMiddleware;

Improve cache for hashed js files
Improve cache for hashed js files
