- Smart resource management, with caddy(https://github.com/mholt/caddy)+seaweedfs(https://github.com/chrislusf/seaweedfs)
- 直接使用weed储存图片,在获取图片使用width和height的时候,weed并没有将获取的这个缩略图缓存,导致每次获取同样尺寸的缩略图weed都会重新处理图片,从而导致前端获取图片时间很长。minres的思路是将用户请求的图片文件按照请求的尺寸缓存起来,当有同样的资源请求的时候直接取缓存。
- weed支持的资源都支持
- 由于web服务基于caddy,支持自动https
- 提供了统一资源上传接口,支持断点续传
- 仅仅图片缩略图支持缓存,从而不用每次到weed请求,提高了性能
- 接口支持鉴权(下个版本支持)
go get github.com/zhangmingfeng/minres
go build -o minres minres.go
- redis (用来存储上传文件的信息, 实现断点续传以及文件的本地缓存)
- seaweedfs (小文件存储系统)
- 配置文件基于caddy配置,详情请看caddy配置:https://caddyserver.com/docs/caddyfile
- 配置文件内容如下:
localhost:61621 { cors / { #跨域支持 origin * methods GET,POST,OPTIONS allowed_headers X-Requested-With,X-User-Token } log /var/log/minres/web-access.log { rotate_size 50 # Rotate after 50 MB rotate_keep 10 # Keep at most 10 log files rotate_compress # Compress rotated log files in gzip format } errors /var/log/minres/web-error.log { rotate_size 50 # Rotate after 50 MB rotate_keep 10 # Keep at most 10 log files rotate_compress # Compress rotated log files in gzip format } minres { #主配置 wd_master 127.0.0.1:9333 # weed的master地址 cache_path /data # 缓存文件的位置 log_path /var/log/minres/minres.log log_level DEBUG } redis { # redis配置 addr 127.0.0.1:6379 db 0 } }
-
url: /params
-
上送参数:
- fileName string 上传文件名
- fileGroup string 文件分类组,默认default
- fileSize int 文件大小,单位字节
- fileTime int 文件最后修改时间戳
- chunkSize int 文件上传分片大小,单位字节,如1024 * 1024,即1M
-
返回参数:
- code int 返回码,200表示成功
- msg string 返回信息
- token string 文件上传token,下面的上传接口需要上送,安全机制
- uploadUrl string 文件上传地址
- chunkSize int 分片大小
- chunk int 当前分片
- chunks int 文件上传总分片
- loaded int 文件已经上传的字节数,用于断点续传
- fileGroup string 文件分类组
-
url: /upload
-
上送参数:
- token string 文件上传token
- chunk int 当前上传的分片
- fileHandle string 文件上传的域,默认'file'
-
返回参数
- code int 返回码,200表示成功
- msg string 返回信息
- isFinished bool 文件上传是否完成
- loaded int 文件已经上传的字节数
- chunk int 当前分片
- chunks int 文件上传总分片
- file object 文件上传完成之后的信息
- fid string 文件ID,唯一标识,后面请求文件都需要
- url string 文件access url
- name string 文件名
- size int 文件大小,单位字节
- url: /fetch/{fid}
- fid表示文件ID,文件上传成功之后返回的
- 可以在url后面增加query参数:
- w int 仅仅在资源是图片的时候有用,定制返回的图片的宽度
- h int 仅仅在资源是图片的时候有用,定制返回的图片的高度
- m string 仅仅在资源是图片的时候有用,设置缩略图的属性,目前支持:fit, fill,具体可参见https://github.com/chrislusf/seaweedfs
- dl bool 是否是下载,如果是下载,即使是浏览器可以直接打开的文件,也会当做附件下载
-
url: /remote
-
上送参数:
- url string 远程文件URL
- fileName string 保存的文件名, 默认值随机串
- fileGroup string 文件分类组, 默认值'default'
-
返回参数
- code int 返回码,200表示成功
- msg string 返回信息
- file object 文件上传完成之后的信息
- fid string 文件ID,唯一标识,后面请求文件都需要
- url string 文件access url
- name string 文件名
- size int 文件大小,单位字节
在linux系统下,可以安装开机自启动,参见:https://caddyserver.com/docs/hook.service 以ubuntu为例:
sudo ./minres -conf /path/to/caddyfile -service install -name minres
service minres start
直接启动服务 ./minres -conf /path/to/caddyfile