说一下博客的一些些优化

简介

博客使用的是drone 做cicd的,最开始是在k3s集群上build的,一般都需要3分钟这样子。现在一般就是1分多钟这样子

镜像编译方面的优化

首先是镜像编译方面的优化

.dockerignore

这个文件是一定要添加的,因为在构建的时候很多东西是没必要去拷贝的,同时加上之后可以减少镜像体积

其次多段构建肯定是需要的,我不管前面编译的base镜像有多大,我只需要最后生成的html文件

还有在写Dockerfile的时候要尽量减少网络的交互,比如安装依赖,下载需要的文件等。所以我会有一个base专门用来做编译的镜像

1
2
3
4
5
6
7
FROM node:16.13.0-alpine as builder
WORKDIR /build
RUN cd /build && \
npm install hexo-cli -g --registry=https://registry.npmmirror.com >/dev/null
COPY package.json /build
RUN npm install --registry=https://registry.npmmirror.com >/dev/null
RUN npm install --registry=https://registry.npmmirror.com @waline/hexo-next

之后才是编译使用的Dockerfile

1
2
3
4
5
6
7
8
9
FROM bboysoul/blog:build-v1.0.0
COPY . /build
RUN hexo clean && \
hexo generate --silent


FROM bboysoul/thttpd:v2.29-1
COPY --from=0 /build/public /html
CMD ["/thttpd", "-D", "-h", "0.0.0.0", "-p", "80", "-d", "/html", "-u", "static","-l", "-", "-M", "60"]

上面可以看到第二段构建我使用了bboysoul/thttpd:v2.29-1这个镜像

这个镜像的dockerfile是下面这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM alpine:3.13.2 AS builder


RUN apk add gcc musl-dev make
COPY thttpd-2.29.tar.gz /
RUN tar -xzvf thttpd-2.29.tar.gz \
&& mv /thttpd-2.29 /thttpd

RUN cd /thttpd \
&& ./configure \
&& make CCOPT='-O2 -s -static' thttpd
RUN adduser -D static


FROM scratch
EXPOSE 80
COPY --from=builder /etc/passwd /etc/passwd
COPY --from=builder /thttpd/thttpd /
USER static

没错我使用了scratch镜像,这点也很重要,这样可以大幅度减小镜像的体积

博客除了这些html文件,还有一些图片,这些图片因为不是经常变动的,所以不需要打包进镜像中,直接以volume形式挂载进来就好了

最终镜像因为加了html的缘故,导致体积来到了26.3MB。

网络方面的优化

最开始博客是放在家里小机柜里面的,但是因为国内网络问题,所以内网穿透会十分不稳定,迫不得已,一些必须要公网访问的服务我直接放到了服务器上,服务器上所有的服务都是通过一个nginx出去的。所以优化这个nginx也是重要的一步

我这边的话就开了一个http2。还有就是brotli压缩。

后就是前端的cdn,我使用的是cloudflare,Auto Minify这个功能可以开起来,反正不要钱

Brotli压缩也可以开启来,虽然后端的nginx已经开过了,但是反正不要钱

然后就是cloudflare网络里面的

HTTP/3(使用 QUIC)

HTTP/2 to Origin

这两个也最好开启

图片方面的优化

每次更新网站图片的时候,我都会去压缩一下图片然后上传,图片最好是webp格式的,这样可以大幅度减少加载时间

其他方面优化

为了可以少加载下面几个字

浙公网安备 xxxxx号

最好不要备案,不然对于网络带宽影响 很大

最终的效果

  • 完成用时:1.47 秒
  • DOMContentLoaded:575 毫秒
  • 加载时间:734 毫秒

欢迎关注我的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道