图片地址在浏览器里不显示而是弹出下载框,img 标签引用也是空白,同一个目录下的 jpg 打开却完全正常。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
types { image/avif avif; }
nginx -t && nginx -s reload
curl -sI https://img.a.com/a.avif | grep -i content-type
扩展名没进服务器的类型映射表,响应头按默认的二进制流返回,浏览器拿到通用类型就不当图片渲染,页面自然是一片空白。这一点先确认清楚,后面就不用反复试。
「AVIF MIME」这类改动最怕改一半,回滚脚本先准备好,再动生产。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,先在服务器的类型映射表里补上这种格式的对应值;重载配置之后 再确认响应头里的内容类型对不对;加速侧的类型规则也同步一份 别只改源站一处。
改完照着核一遍,响应头里的类型回到 image/avif,页面里的图片就能正常显示不再弹下载框。
