Published on

我的网站用Next.js来做

Authors
  • avatar
    Name
    祝你好运
    Twitter

我们都知道Next.js在做SEO还有网页加载速度优化方面都非常好,我非常喜欢的功能就是代码的预加载,那我的网站为什么不用Next.js来做呢?

SSR还是SSG?

由于我的博客内容是不会变的,也就是说每个用户进来看到的都一样,所以不需要使用SSR,使用SSG就可以了。

目录结构

我是把nginx和我的Next.js相关的代码放到同一个代码仓库里面的,这样修改配置文件也比较方便。同时,由于我的这个项目比较简单,就没有使用像TurboRepo这样的monorepo管理工具。

my-blog-repo
├─ .git/
├─ .husky/
│   ├─ pre-commit
├─ docker-compose.yml
├─ nginx
│   ├─ ...
└─ nextjs
    ├─ package.json      // 里边有 "lint-staged": {...}
    └─ ...

为什么要用nginx?

这个是练习性质的目的,其实如果是SSG,就直接托管到CDN就可以了,没有必要再用nginx和SSR。我的这样的练习性质的做法,是为了模仿真正的SSR,如果是SSR,那肯定要做服务降级,也就是如果服务端渲染失败了,就回退到CSR。当然现在是用不到,但是可以学习到SSR的原理。后面再探索下nginx如何做负载均衡,然后用压力测试工具测试下性能。这样也可以更加深刻的理解SSR的实际应用。

滚动升级?

目前我的网站上nginx和Next.js都只有一个实例,所以不太好做滚动升级,可以手工实现蓝绿发布,但是这样太麻烦了。后面可以做成多实例的,然后再做滚动升级。

压力测试?

压力测试工具:wrk,这个我目前不太熟悉,后面再研究下。

CI/CD?

目前代码是托管到Gitee上的,然后最近两天就把CI/CD部署一下。目前是手动部署的,也就是代码用rsync同步到服务器上,然后手动打镜像,然后重启nginx和Next.js。