Browse Source

Heuristic long expiration warning

patch-1
Kornel 8 years ago
parent
commit
a897f68445
  1. 9
      index.js
  2. 15
      test/revalidatetest.js

9
index.js

@ -221,7 +221,14 @@ module.exports = class CachePolicy {
responseHeaders() {
const headers = this._copyWithoutHopByHopHeaders(this._resHeaders);
headers.age = `${Math.round(this.age())}`;
const age = this.age();
// A cache SHOULD generate 113 warning if it heuristically chose a freshness
// lifetime greater than 24 hours and the response's age is greater than 24 hours.
if (age > 3600*24 && !this._hasExplicitExpiration() && this.maxAge() > 3600*24) {
headers.warning = (headers.warning ? `${headers.warning}, ` : '') + '113 - "rfc7234 5.5.4"';
}
headers.age = `${Math.round(age)}`;
return headers;
}

15
test/revalidatetest.js

@ -106,6 +106,7 @@ describe('Can be revalidated?', function() {
const headers = cache.revalidationHeaders(simpleRequest);
assertHeadersPassed(headers);
assert.equal(headers['if-modified-since'], 'Tue, 15 Nov 1994 12:45:26 GMT');
assert(!/113/.test(headers.warning));
});
it('not without validators', function() {
@ -113,6 +114,20 @@ describe('Can be revalidated?', function() {
const headers = cache.revalidationHeaders(simpleRequest);
assertHeadersPassed(headers);
assertNoValidators(headers);
assert(!/113/.test(headers.warning));
})
it('113 added', function() {
const veryOldResponse = {
headers: {
age: 3600*72,
'last-modified': 'Tue, 15 Nov 1994 12:45:26 GMT',
},
};
const cache = new CachePolicy(simpleRequest, veryOldResponse);
const headers = cache.responseHeaders(simpleRequest);
assert(/113/.test(headers.warning));
})
});

Loading…
Cancel
Save