nuxt2如何既使用ssr又使用首页静态化

我nuxt项目部署在了nginx 服务器,使用了 npm run build
将其中的.nuxt static nuxt.config.js package.json 放在了服务器网站目录
nginx中 使用 反向代理
location / {
proxy_pass localhost:3000;
}
发现首页的负载比较高,想将首页进行静态化处理,首页的数据更新的比较慢
使用nuxt2,如何既使用ssr, 又可以将首页静态化
如果可以首页静态化,如何一定周期后再自动生成静态化首页?
首页静态化之后nginx 上又需要如何配置?

参考自 chatGPT 希望能对你有启发:
在 Nuxt.js 中,可以通过 nuxt generate 命令生成静态化站点,具体可以参考官方文档:https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-generate。
在生成静态化站点后,可以将静态化的首页放在 Nginx 服务器上,并在 Nginx 配置文件中设置首页的缓存,可以有效减轻首页的负载压力。具体配置方式如下:

1.在 Nginx 配置文件中,添加以下配置,用于设置首页缓存:

location = / {
  # 设置缓存名称为 home
  add_header Cache-Control "public, max-age=60, s-maxage=60, must-revalidate";
  # 设置缓存时间为 60 秒
  proxy_cache_valid 200 60s;
  # 指定缓存文件存放位置
  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=home_cache:10m inactive=60m;
  # 开启缓存
  proxy_cache home_cache;
  # 访问首页时,先检查缓存是否存在,如果存在则直接返回缓存文件
  proxy_cache_revalidate on;
  proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
  proxy_cache_bypass $http_pragma;
  proxy_cache_bypass $http_authorization;
}

在上述配置中,我们使用 proxy_cache 模块设置了一个名为 home 的缓存,缓存时间为 60 秒。当用户访问首页时,Nginx 会先检查缓存是否存在,如果存在则直接返回缓存文件。如果缓存过期或不存在,则会向后端服务器请求最新的首页数据,并将数据缓存到本地。
2. 在 Nuxt.js 项目中,可以在 nuxt.config.js 文件中配置静态化站点的生成方式。在 generate 属性中,可以设置静态化站点的路由,具体可以参考以下代码示例:

export default {
  generate: {
    // 配置首页的路由,这里使用 / 表示首页
    routes: [
      '/'
    ]
  }
}

在上述代码中,我们将首页的路由设置为 /,表示生成静态化站点时,只生成首页的静态化文件。
3. 在 Nuxt.js 项目中,可以使用 setInterval 定时生成静态化站点。具体可以参考以下代码示例:

export default {
  generate: {
    // 配置生成静态化站点的路由
    routes: [
      '/'
    ]
  },
  // 每小时生成一次静态化站点
  hooks: {
    generate: {
      async done(generator) {
        setInterval(async () => {
          await generator.generate({
            // 配置生成静态化站点的路由
            routes: [
              '/'
            ]
          })
        }, 3600 * 1000) // 3600 秒 * 1000 毫秒 = 1 小时
      }
    }
  }
}

在上述代码中,我们使用 setInterval 定时生成静态化站点,每小时生成一次。在 generate 钩子函数中,我们可以使用 generator.generate 方法生成静态化站点,并在方法中配置需要生成的路由。
需要注意的是,在使用静态化站点时,需要确保站点中的数据能够实时更新。可以考虑使用 ajax 或 websocket 等技术,实时获取最新的数据并更新页面。

  • 这篇博客: nuxt.js部署到nginx的非根目录中的 二、安装nuxt.js 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 这里我就偷懒了,直接上链接还有截图https://zh.nuxtjs.org/guide/installation
    在这里插入图片描述
    package.json的配置片段
    在这里插入图片描述
    然后将你的代码(.nuxt文件夹,static文件夹,nuxt.config.js和package.json这四个即可,注意.nuxt放到linux上面会是隐藏的)放上去服务器域名的非根目录(这里我只说非根目录的,比如我的域名www.test.com指向的目录为/home/webapps/aa/bb , 而我要把代码放到/home/webapps/aa/bb/gsyshop下面)

    代码放上去之后npm install 安装依赖
    依赖安装结束后就可以愉快的开发了 , 本地开发结束,npm run build打包然后将.nuxt替换到服务器对应目录即可,在服务器端npm run start
    之后就可以通过http://你的域名/nuxtshop/来访问了
    然后开启进程守护 pm2 start npm --name “my-nuxt” – run start
    其中 “my-nuxt”的名称是 我们在package中的项目名称。
    (有什么问题欢迎留言指正)