diff --git a/src/middleware.ts b/src/middleware.ts index d86a77a..eef75ca 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -312,6 +312,7 @@ function get_page_handler( } = get_build_info(); res.setHeader('Content-Type', 'text/html'); + res.setHeader('Cache-Control', dev() ? 'no-cache' : 'max-age=600'); // preload main.js and current route // TODO detect other stuff we can preload? images, CSS, fonts? @@ -532,7 +533,6 @@ function get_page_handler( .replace('%sapper.styles%', () => styles); res.statusCode = status; - res.setHeader('Cache-Control', dev() ? 'no-cache' : 'max-age=600'); res.end(body); }).catch(err => { if (error) { diff --git a/test/common/test.js b/test/common/test.js index f149911..065e22e 100644 --- a/test/common/test.js +++ b/test/common/test.js @@ -5,6 +5,7 @@ const Nightmare = require('nightmare'); const walkSync = require('walk-sync'); const rimraf = require('rimraf'); const ports = require('port-authority'); +const fetch = require('node-fetch'); Nightmare.action('page', { title(done) { @@ -800,15 +801,20 @@ function run({ mode, basepath = '' }) { }); describe('headers', () => { - it('sets Content-Type and Link...preload headers', () => { - return capture(() => nightmare.goto(base)).then(requests => { - const { headers } = requests[0]; + it('sets Content-Type, Link...preload, and Cache-Control headers', () => { + return capture(() => fetch(base)).then(responses => { + const { headers } = responses[0]; assert.equal( headers['content-type'], 'text/html' ); + assert.equal( + headers['cache-control'], + 'max-age=600' + ); + const str = ['main', '.+?\\.\\d+'] .map(file => { return `<${basepath}/client/[^/]+/${file}\\.js>;rel="preload";as="script"`;