From 63b56aeda45835b17ee773e68fd08d820c60c5e2 Mon Sep 17 00:00:00 2001 From: Bartek Igielski Date: Wed, 30 Jan 2019 13:20:19 +0100 Subject: [PATCH 1/2] Output cache versioning --- .gitignore | 1 + core/build/webpack.server.config.js | 12 ++++++++++++ core/package.json | 1 + core/scripts/server.js | 12 +++++++++--- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 9c7038ea51..098ffea0ca 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ config/local.json var build/config.json core/build/config.json +core/build/cache-version.json theme.js desktop.ini src/themes/catalog/resource/i18n.json diff --git a/core/build/webpack.server.config.js b/core/build/webpack.server.config.js index 0b3b037308..5c7a260303 100644 --- a/core/build/webpack.server.config.js +++ b/core/build/webpack.server.config.js @@ -3,6 +3,18 @@ const merge = require('webpack-merge') const base = require('./webpack.base.config') const VueSSRPlugin = require('vue-ssr-webpack-plugin') +// when output cache is enabled generate cache version key +const config = require('config') +const fs = require('fs') +const path = require('path') +const uuid = require('uuid/v4') +if (config.server.useOutputCache) { + fs.writeFileSync( + path.join(__dirname, 'cache-version.json'), + JSON.stringify(uuid()) + ) +} + module.exports = merge(base, { mode: 'development', target: 'node', diff --git a/core/package.json b/core/package.json index 343d9af870..2f05766c87 100644 --- a/core/package.json +++ b/core/package.json @@ -18,6 +18,7 @@ "lru-cache": "^4.0.1", "redis-tag-cache": "^1.2.1", "remove-accents": "^0.4.2", + "uuid": "^3.3.2", "vue": "^2.5.17", "vue-carousel": "^0.6.9", "vue-i18n": "^8.0.0", diff --git a/core/scripts/server.js b/core/scripts/server.js index 0410946813..9898ad3dad 100755 --- a/core/scripts/server.js +++ b/core/scripts/server.js @@ -7,10 +7,12 @@ let config = require('config') const TagCache = require('redis-tag-cache').default const utils = require('./server/utils') const compile = require('lodash.template') + const compileOptions = { escape: /{{([^{][\s\S]+?[^}])}}/g, interpolate: /{{{([\s\S]+?)}}}/g } + const isProd = process.env.NODE_ENV === 'production' process.noDeprecation = true @@ -18,11 +20,15 @@ const app = express() let cache if (config.server.useOutputCache) { + const cacheKey = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'build', 'cache-version.json')) || '') + const redisConfig = Object.assign(config.redis, { keyPrefix: cacheKey }) + cache = new TagCache({ - redis: config.redis, - defaultTimeout: config.server.outputCacheDefaultTtl // Expire records after a day (even if they weren't invalidated) + redis: redisConfig, + defaultTimeout: config.server.outputCacheDefaultTtl }) - console.log('Redis cache set', config.redis) + + console.log('Redis cache set', redisConfig) } const templatesCache = {} From 18a9a10bd5b1cfa1a67c6c3b4f39dda4032907a9 Mon Sep 17 00:00:00 2001 From: Bartek Igielski Date: Wed, 30 Jan 2019 16:51:05 +0100 Subject: [PATCH 2/2] Changelog update --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b309238d64..7e0635b033 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] +### Added +- cache key used to store output chache in redis + ## [1.7.2] - 2019.01.28 ### Fixed - clear search filters on mobile - @patzick (#2282)