diff --git a/core/base-service/cache-headers.js b/core/base-service/cache-headers.js index e8ce9f712fcc7e734c59e85f31df15614b807d6e..4b869e716b1df520d352c4ccdd1b337b14fd70cf 100644 --- a/core/base-service/cache-headers.js +++ b/core/base-service/cache-headers.js @@ -67,7 +67,7 @@ function setHeadersForCacheLength(res, cacheLengthSeconds) { cacheControl = 'no-cache, no-store, must-revalidate' expires = nowGMTString } else { - cacheControl = `max-age=${cacheLengthSeconds} s-maxage=${cacheLengthSeconds}` + cacheControl = `max-age=${cacheLengthSeconds}, s-maxage=${cacheLengthSeconds}` expires = new Date(now.getTime() + cacheLengthSeconds * 1000).toGMTString() } @@ -92,7 +92,7 @@ function setCacheHeaders({ setHeadersForCacheLength(res, cacheLengthSeconds) } -const staticCacheControlHeader = `max-age=${24 * 3600} s-maxage=${24 * 3600}` // 1 day. +const staticCacheControlHeader = `max-age=${24 * 3600}, s-maxage=${24 * 3600}` // 1 day. function setCacheHeadersForStaticResource(res) { res.setHeader('Cache-Control', staticCacheControlHeader) res.setHeader('Last-Modified', serverStartTimeGMTString) diff --git a/core/base-service/cache-headers.spec.js b/core/base-service/cache-headers.spec.js index 65832f50de3e390c74838f4dd1c7e8df072a271c..c6f5d6afb5c51eac0634add220e9deab8e9b6884 100644 --- a/core/base-service/cache-headers.spec.js +++ b/core/base-service/cache-headers.spec.js @@ -147,7 +147,7 @@ describe('Cache header functions', function () { it('should set the expected Cache-Control header', function () { expect(res._headers['cache-control']).to.equal( - 'max-age=123 s-maxage=123' + 'max-age=123, s-maxage=123' ) }) @@ -187,7 +187,7 @@ describe('Cache header functions', function () { it('should set the expected Cache-Control header', function () { expect(res._headers['cache-control']).to.equal( - `max-age=${24 * 3600} s-maxage=${24 * 3600}` + `max-age=${24 * 3600}, s-maxage=${24 * 3600}` ) }) diff --git a/core/base-service/legacy-request-handler.spec.js b/core/base-service/legacy-request-handler.spec.js index 580e7ab93d4ca230e55ceff1cc421507b11530f1..0e2637b6fda14e7999a26a5d1089606ab2a258a7 100644 --- a/core/base-service/legacy-request-handler.spec.js +++ b/core/base-service/legacy-request-handler.spec.js @@ -254,7 +254,7 @@ describe('The request handler', function () { +new Date(headers.date) + 900000 ).toGMTString() expect(headers.expires).to.equal(expectedExpiry) - expect(headers['cache-control']).to.equal('max-age=900 s-maxage=900') + expect(headers['cache-control']).to.equal('max-age=900, s-maxage=900') }) it('should set the expected cache headers on cached responses', async function () { @@ -268,7 +268,7 @@ describe('The request handler', function () { +new Date(headers.date) + 900000 ).toGMTString() expect(headers.expires).to.equal(expectedExpiry) - expect(headers['cache-control']).to.equal('max-age=900 s-maxage=900') + expect(headers['cache-control']).to.equal('max-age=900, s-maxage=900') }) it('should let live service data override the default cache headers with longer value', async function () { @@ -289,7 +289,7 @@ describe('The request handler', function () { ) const { headers } = await got(`${baseUrl}/testing/123.json`) - expect(headers['cache-control']).to.equal('max-age=400 s-maxage=400') + expect(headers['cache-control']).to.equal('max-age=400, s-maxage=400') }) it('should not let live service data override the default cache headers with shorter value', async function () { @@ -310,7 +310,7 @@ describe('The request handler', function () { ) const { headers } = await got(`${baseUrl}/testing/123.json`) - expect(headers['cache-control']).to.equal('max-age=300 s-maxage=300') + expect(headers['cache-control']).to.equal('max-age=300, s-maxage=300') }) it('should set the expires header to current time + cacheSeconds', async function () { @@ -322,7 +322,7 @@ describe('The request handler', function () { +new Date(headers.date) + 3600000 ).toGMTString() expect(headers.expires).to.equal(expectedExpiry) - expect(headers['cache-control']).to.equal('max-age=3600 s-maxage=3600') + expect(headers['cache-control']).to.equal('max-age=3600, s-maxage=3600') }) it('should ignore cacheSeconds when shorter than defaultCacheLengthSeconds', async function () { @@ -334,7 +334,7 @@ describe('The request handler', function () { +new Date(headers.date) + 600000 ).toGMTString() expect(headers.expires).to.equal(expectedExpiry) - expect(headers['cache-control']).to.equal('max-age=600 s-maxage=600') + expect(headers['cache-control']).to.equal('max-age=600, s-maxage=600') }) it('should set Cache-Control: no-cache, no-store, must-revalidate if cache seconds is 0', async function () { diff --git a/services/endpoint/endpoint.tester.js b/services/endpoint/endpoint.tester.js index 26f1a3b167755149e80821474af32b46baa06841..a121cd057444d449f54aaf6636b9856583b9112a 100644 --- a/services/endpoint/endpoint.tester.js +++ b/services/endpoint/endpoint.tester.js @@ -207,7 +207,7 @@ t.create('cacheSeconds') cacheSeconds: 500, }) ) - .expectHeader('cache-control', 'max-age=500 s-maxage=500') + .expectHeader('cache-control', 'max-age=500, s-maxage=500') t.create('user can override service cacheSeconds') .get('.json?url=https://example.com/badge&cacheSeconds=1000') @@ -219,7 +219,7 @@ t.create('user can override service cacheSeconds') cacheSeconds: 500, }) ) - .expectHeader('cache-control', 'max-age=1000 s-maxage=1000') + .expectHeader('cache-control', 'max-age=1000, s-maxage=1000') t.create('user does not override longer service cacheSeconds') .get('.json?url=https://example.com/badge&cacheSeconds=450') @@ -231,7 +231,7 @@ t.create('user does not override longer service cacheSeconds') cacheSeconds: 500, }) ) - .expectHeader('cache-control', 'max-age=500 s-maxage=500') + .expectHeader('cache-control', 'max-age=500, s-maxage=500') t.create('cacheSeconds does not override longer Shields default') .get('.json?url=https://example.com/badge') @@ -243,7 +243,7 @@ t.create('cacheSeconds does not override longer Shields default') cacheSeconds: 10, }) ) - .expectHeader('cache-control', 'max-age=300 s-maxage=300') + .expectHeader('cache-control', 'max-age=300, s-maxage=300') t.create('Bad scheme') .get('.json?url=http://example.com/badge')