nginx+lua实现实时缩略图功能思路

一、概述

        网站的访问速率一直是非常重要的用户体验指标,近期对公司一个重点项目的性能进行优化时遇到了网站图片过大的问题,系统架构设计的实现的过程当中未对图片等静态资源的优化进行重点考虑,线上运行2年多,有大量的存量数据需要进行处理。

二、实现

1、直接修改业务逻辑代码,首先对图片上传的尺寸进行限制,如图片的体积、尺寸等。其次在上传的同时生成不同尺寸的图片,如手机和PC等页面采用不同的图片进行指定尺寸的图片上传。最后在页面加载的过程当中采用异步非实时加载,如首先加载DOM树然后再加载图片元素等。

2、上述方法重点在解决商品列表页的图片,而对于商品的详情页的图片,由于需要采用较为高清的图片提升体验,因此这部分图片尺寸和体积是偏大的,同时生成两种规格的图片需要占用更大的存储空间和处理时长,因此想到在用户访问的过程中对图片进行实时生成缩略图的方式实现,于是考虑到用nginx+lua的网关的方式。

3、图片处理还有很多其它的方式,核心都是在压缩体积,如无损压缩。及加速图片访问加载速度,如CDN等,但当前业务场景下业务用户非常集中和区域特征明显,CDN没有发挥最核心的能力。

三、代码

此处需要的环境为opresty+lua+GraphicsMagick,也就是在nginx的请求执行流程当中增加了lua的逻辑处理,调用GraphicsMagick命令完成图片的生成和加载工作。以下直接上代码:

-- openresty+lua+GraphicsMagick 对图片进行压缩生成缩略图,加速页面的访问。
-- author: Lingyunyi
-- mail:xxxx@126.com
-- last upd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值