1. 图片加载失败
最近有朋友评论说文章图片打不开,我以为是网络的问题就没有在意,现在来解决一下。
如图所示,打开网页时图片裂开了,很影响访问。
2. 调查原因
为了防止浏览器缓存影响,新开了一个无痕窗口,随便打开一个图片多的文章,可以看到图片加载失败,返回514
。
GET
请求返回的是514
。
说明一下,网站文章的图片都是放在腾讯云对象存储COS
中的,并使用CDN
进行加速。
所以就可以去腾讯云文档里找答案。
可以看到返回514
有以下三个可能原因。
没有启用 HTTPS 服务,使用了 HTTPS 访问导致返回514;
命中了 IP 访问限频配置,IP 访问限频设置针对单 IP 单节点每秒访问次数进行了限制,若超出限制,则会直接返回514;
命中了 IP 黑白名单配置,若用户端访问的 IP 命中配置黑名单内 IP 或白名单外 IP 均返回514。
根据本站的实际配置情况,采用排除法,真相就只有一个了--IP访问限频配置
。
3. 找到原因
什么是IP 访问限频配置
,看文档。
该阈值就是单IP节点
每秒可访问的最大次数,超过QPS限制
的请求会直接返回514
。
文档配置说明里的这一条👇🏻,就是本站图片加载失败的原因,我配置的单IP节点QPS限制
是20
。
同一个域名下有多个不同 URL,若同时请求不同 URL 时,单 IP 单节点超出阈值的 URL 均直接返回514。
4. 解决
这么看来20确实是小了,应该调大一些。阈值小了影响网站访问,大了会有安全问题,怎么找这个临界值?
分析一下,打开任意一个网页,在极短的时间内要加载大量的图片,每一个图片都是访问CDN的不同请求的URL,且还包括一些网站配置类的图片。这个极短的时间肯定是越小越好,不然会影响网站访问体验。再排除掉在这个极短的时间内一次性打开多个网页的情况,这种肯定是非法的请求,就不用考虑访问体验了。
所以这个阈值就与单网页图片的数量有关,目前看来不会超过100张,所以阈值就是100了。
打开腾讯云控制台
->内容分发网络
->域名管理
->点击域名
->访问控制
->IP访问限频配置
,阈值设为100。
打开最初图片加载失败的网页验证一下,可以看到图片都加载成功了,问题解决。
以上。