简介
博客使用的是drone 做cicd的,最开始是在k3s集群上build的,一般都需要3分钟这样子。现在一般就是1分多钟这样子
镜像编译方面的优化
首先是镜像编译方面的优化
.dockerignore
这个文件是一定要添加的,因为在构建的时候很多东西是没必要去拷贝的,同时加上之后可以减少镜像体积
其次多段构建肯定是需要的,我不管前面编译的base镜像有多大,我只需要最后生成的html文件
还有在写Dockerfile的时候要尽量减少网络的交互,比如安装依赖,下载需要的文件等。所以我会有一个base专门用来做编译的镜像
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
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是下面这样的
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