Skip to content

Commit 9c56cde

Browse files
committed
implement component caching
1 parent 4817eee commit 9c56cde

File tree

4 files changed

+19
-5
lines changed

4 files changed

+19
-5
lines changed

build/webpack.server.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module.exports = Object.assign({}, base, {
99
filename: 'server-bundle.js',
1010
libraryTarget: 'commonjs2'
1111
}),
12-
externals: ['firebase', 'lru-cache', 'es6-promise'],
12+
externals: Object.keys(require('../package.json').dependencies),//['firebase', 'lru-cache', 'es6-promise'],
1313
plugins: [
1414
new webpack.DefinePlugin({
1515
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),

server.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,19 @@ let renderer
2828
if (isProd) {
2929
// create server renderer from real fs
3030
const bundlePath = resolve('./dist/server-bundle.js')
31-
renderer = createBundleRenderer(fs.readFileSync(bundlePath, 'utf-8'))
31+
renderer = createRenderer(fs.readFileSync(bundlePath, 'utf-8'))
3232
} else {
3333
require('./build/setup-dev-server')(app, bundle => {
34-
renderer = createBundleRenderer(bundle)
34+
renderer = createRenderer(bundle)
35+
})
36+
}
37+
38+
function createRenderer (bundle) {
39+
return createBundleRenderer(bundle, {
40+
cache: require('lru-cache')({
41+
max: 1000,
42+
maxAge: 1000 * 60 * 15
43+
})
3544
})
3645
}
3746

src/components/Item.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@
2828

2929
<script>
3030
export default {
31-
name: 'NewsItem',
32-
props: ['item']
31+
name: 'news-item',
32+
props: ['item'],
33+
serverCacheKey: ({ item: { id, __lastUpdated } }) => {
34+
console.log(__lastUpdated)
35+
return `${id}::${__lastUpdated}`
36+
}
3337
}
3438
</script>
3539

src/store/api.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ function fetch (child) {
5050
return new Promise((resolve, reject) => {
5151
api.child(child).once('value', snapshot => {
5252
const val = snapshot.val()
53+
val.__lastUpdated = Date.now()
5354
cache && cache.set(child, val)
5455
resolve(val)
5556
}, reject)

0 commit comments

Comments
 (0)