作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
https://github.com/sunshinelyz/mykit-delay
PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。
今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的。起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题。还别说,就是这么巧呀!!就冲这标题,也要写一篇干货满满的技术好文!! 关于Nginx的安装,小伙伴们可以参考《【Nginx】实现负载均衡、限流、缓存、黑白名单和灰度发布,这是最全的一篇了!》 还有就是,我通过小程序开通了留言功能,小伙伴们如果对文章有什么好的建议和意见,或者在阅读文章时,有什么疑问,都可以在留言区进行留言!!
为了手机端浏览到与手机分辨率相匹配的图片,提高 APP 访问速度以及减少用户的手机流量,需要将图片生成缩略图,这边共有以下解决方案。
经过多方的考虑,决定使用方案 C,使用 Nginx 自带模块生成缩略图。
使用 Nginx 自带模块生成缩略图,模块:--with-http_image_filter_module,例如,我们可以使用如下参数安装Nginx:
./configure --prefix=/usr/local/nginx-1.19.1 --with-http_stub_status_module --with-http_realip_module --with-http_image_filter_module --with-debug
接下来,修改 nginx.conf 配置文件,或者将下面的配置放到nginx.conf文件相应的 server 块中。
location ~* /(\d+)\.(jpg)$ {
set $h $arg_h; # 获取参数h的值
set $w $arg_w; # 获取参数 w 的值
#image_filter crop $h $w;
image_filter resize $h $w;# 根据给定的长宽生成缩略图
}
location ~* /(\d+)_(\d+)x(\d+)\.(jpg)$ {
if ( -e $document_root/$1.$4 ) { # 判断原图是否存在
rewrite /(\d+)_(\d+)x(\d+)\.(jpg)$ /$1.$4?h=$2&w=$3 last;
}
return 404;
}
配置完成后,我们就可以使用类似如下的方式来访问图片。
http://www.binghe.com/123_100x10.jpg
当我们在浏览器地址栏中输入上面的链接时,Nginx会作出如下的逻辑处理。
注意:使用Nginx生成等比例缩略图时有一个长宽取小的原则,例如原图是 100*10,你传入的是 10*2,那么Nginx会给你生成 10*1 的图片
。生成缩略图只是 image_filter 功能中的一个,它一共支持 4 种参数:
优点:
缺点:
建议:
生成缩略是个消耗 CPU 的操作,如果访问量比较大的站点,最好考虑使用程序生成缩略图到硬盘上,或者在前端加上 Cache缓存或者使用 CDN。
好了,今天就聊到这儿吧!小伙伴们可以在下方留言。别忘了给个在看和转发,让更多的人看到,一起学习一起进步!!