生产环境 GoAdmin 后台加载慢的问题

更新日期: 2020-04-23 阅读次数: 6475 字数: 470 分类: golang

从 Chrome Network 里看,GoAdmin 加载了很多大的静态资源文件,例如 all_2.min.js 有 1.2M 之大。

生产环境 GoAdmin 后台加载慢的问题

更严重的是,GoAdmin 没有对静态资源文件做缓存设置,导致每次用浏览器打开,都需要重新拉取一遍全量的静态资源文件。而我的服务器带宽只有 1M,下载速度非常缓慢。

生产环境 GoAdmin 后台加载慢的问题

可以对比参考 Google 首页的处理方式:

生产环境 GoAdmin 后台加载慢的问题

解决方法一:

GoAdmin 后台设置 CDN,参考 http://doc.go-admin.cn/zh/admin/cdn/

但是这种方法,我并不打算使用。原因是:

  • 更新 CDN 文件麻烦。每次版本升级,都需要对应的更新 CDN 文件。
  • 由于这个管理后台只有我一个人用,放 CDN 有点浪费了。实际上放自己服务器上,缓存时间设置的长一些,体验也非常好。

解决方法二:

在自己服务器上拉取 GoAdmin 主题仓库的代码:

git clone git@github.com:GoAdminGroup/themes.git

对比管理后台静态资源的请求路径,及 theme 代码库的路径,在 Nginx 上设置一个规则,自动转发到主题代码目录。

https://www.sunzhongwei.com/goadmin/assets/dist/js/all.min.js
https://github.com/GoAdminGroup/themes/tree/master/adminlte/resource/assets/dist/js

由于阿里云服务器上拉取 github 代码一直显示 Connection refused 错误,所以,我干脆把 dist 目录扔到了后台项目代码中:

$ git clone https://github.com/GoAdminGroup/themes
Cloning into 'themes'...
fatal: unable to access 'https://github.com/GoAdminGroup/themes/': Failed to connect to 127.0.0.1 port 1080: Connection refused

最终的 Nginx 配置

location /goadmin/assets/dist/ {
    access_log off; 
    expires 30d;
    alias /project_path/go/public/goadmin/;
}

配置之后,确实加载 GoAdmin 后台要快多了。

返回的数据头中多了 Cache-Control: max-age=2592000,即 30 天。

Cache-Control: max-age=2592000
Date: Thu, 23 Apr 2020 03:10:21 GMT
ETag: "5ea104b8-13df64"
Last-Modified: Thu, 23 Apr 2020 03:00:08 GMT

tags: GOADMIN Nginx 缓存静态文件

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式