mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-02 15:55:08 +03:00
db53ac0721
no issue - Updated Test & linting packages - Updated use of hasOwnProperty - Using Object.prototype.hasOwnProperty instead (ref. eslint.org/docs/rules/no-prototype-builtins) - Removed already defined built-in global variable Intl - Applied `--fix` with lint command on `core/test` folder - The rules were broken because some of them were made stricter for `eslint: recommended` ruleset (ref. https://eslint.org/docs/user-guide/migrating-to-6.0.0#eslint-recommended-changes) - Removed redundant global variable declarations to pass linting
37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
// # CacheControl Middleware
|
|
// Usage: cacheControl(profile), where profile is one of 'public' or 'private'
|
|
// After: checkIsPrivate
|
|
// Before: routes
|
|
// App: Admin|Site|API
|
|
//
|
|
// Allows each app to declare its own default caching rules
|
|
|
|
const isString = require('lodash/isString');
|
|
const config = require('../../../config');
|
|
|
|
const cacheControl = (options) => {
|
|
const profiles = {
|
|
public: 'public, max-age=' + config.get('caching:frontend:maxAge'),
|
|
private: 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
|
|
};
|
|
|
|
let output;
|
|
|
|
if (isString(options) && Object.prototype.hasOwnProperty.call(profiles, options)) {
|
|
output = profiles[options];
|
|
}
|
|
|
|
return function cacheControlHeaders(req, res, next) {
|
|
if (output) {
|
|
if (res.isPrivateBlog) {
|
|
res.set({'Cache-Control': profiles.private});
|
|
} else {
|
|
res.set({'Cache-Control': output});
|
|
}
|
|
}
|
|
next();
|
|
};
|
|
};
|
|
|
|
module.exports = cacheControl;
|