我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 等技术,实时获取最新的数据并更新页面。
这里我就偷懒了,直接上链接还有截图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中的项目名称。
(有什么问题欢迎留言指正)