diff --git a/middleware/render-page.js b/middleware/render-page.js index cd0c84965f0c..565ecf545189 100644 --- a/middleware/render-page.js +++ b/middleware/render-page.js @@ -6,8 +6,19 @@ const layouts = require('../lib/layouts') const getMiniTocItems = require('../lib/get-mini-toc-items') const Page = require('../lib/page') +// We've got lots of memory, let's use it +// We can eventually throw this into redis +const pageCache = {} + module.exports = async function renderPage (req, res, next) { const page = req.context.page + const originalUrl = req.originalUrl + + // Serve from the cache if possible + if (req.method === 'GET' && pageCache[originalUrl]) { + console.log(`Serving from cached version of ${originalUrl}`) + return res.send(pageCache[originalUrl]) + } // render a 404 page if (!page) { @@ -74,5 +85,11 @@ module.exports = async function renderPage (req, res, next) { const output = await liquid.parseAndRender(layout, context) - res.send(output) + // Save output to cache for the next time around + if (req.method === 'GET') { + pageCache[originalUrl] = output + } + + // send response + return res.send(output) }