# 页面缓存

虽然nuxt可以实现服务端渲染(ssr), 这得益于虚拟dom可以让vue在脱离浏览器的环境下进行html的生成,从而实现服务端直出完整的html,达到 SEO 友好的目的。但同时也带来了一个问题,这需要消耗服务器额外的计算性能。所以,我们可以对页面做页面级别的缓存。核心就是当页面在第一次被渲染之后,将页面的计算结果缓存下来,然后在后续的一段时间内如果遇到相同的页面,则直接返回之前的缓存的页面结果,减少服务器在单位时间内重复的计算量。

# 安装 nuxt-ssr-cache

npm i nuxt-ssr-cache --save

# 配置nuxt.config.js

module.exports = {
  mode: 'universal',
  ...
  modules:[
    'nuxt-ssr-cache'
  ],
  cache: {
    useHostPrefix: false,
    pages: ['/'],
    store: {
      // 使用内存来存储页面内容
      type: 'memory',
      // 最多缓存100个页面
      max: 100,
      // 缓存时间,秒
      ttl: 60
    }
  },
  ...
}

在 modules 中增加 nuxt-ssr-cache 模块, 并且配置 cache 属性值即可生效,缓存页面的唯一标示是使用页面的url路径加query参数拼接在一起来表示唯一页面