2023 了,网站有大量小图片应该怎么处理?

2023-03-15 09:04:28 +08:00
 garlics
本来是小图片都放在后端,然后前端通过 https 访问。这么用一直没啥问题,直到最近发现 cdn 开始对 https 访问次数收费,我每天不到 4 千的 uv ,半个月就干了 200w 请求,直接就把月免费额度干完了。

目前就想到两个方法减少图片的 https 请求,一个是直接在接口返回 base64 ,一个是雪碧图。我网站的图片基本都不变化,使用 base64 的话,就无法使用浏览器的缓存,用户体验会变差。使用雪碧图的话,我刚看了下,目前有 600 多个小图片,但是每次网页只展示 40~60 个,虽然展示的有点规律,但是不多。一次生成 600 多个图片的雪碧图,文件过大,体验也不太好。如果是后端根据前端请求统一图片生成雪碧图并返回相应 css 给前端似乎能解决相关的痛点,不过实现起来有点麻烦,如果没有更好的方案估计会选用这么做。
2726 次点击
所在节点    问与答
22 条回复
docx
2023-03-15 09:05:48 +08:00
对象存储,用另一家服务商
Chad0000
2023-03-15 09:09:11 +08:00
如果能上 cf 就没有这个问题了
netnr
2023-03-15 09:09:30 +08:00
使用 Service Worker 缓存图片或整站
garlics
2023-03-15 09:17:58 +08:00
@docx 使用对象储存还是需要用 cdn 进行访问吧,刚看了下七牛的免费额度只适用于 http 请求,而要换服务商的话肯定也是等现在服务商的流量用完再说。

@Chad0000 因为面向的是国内用户,所以就没上 cf 。


@netnr 我这个场景网页是一天一变,缓存整站意义不大。缓存图片的话,我配置了 http 的缓存规则,应该不用额外处理也是默认缓存的吧,不过我倒是没详细测试过缓存生效没有。
siknet
2023-03-15 10:11:33 +08:00
又拍云有 https 的免费额度
xiangyuecn
2023-03-15 10:23:01 +08:00
不要在意这几毛钱
weiwoxinyou
2023-03-15 10:25:45 +08:00
按请求次数收费而不是流量收费可还行。

第一眼以为 http2.0 解决,第二眼发现可能雪碧图更合适一点。

用户屏幕 40-60 个的图片按 1920*1080 的分辨率计算可知单个图片差不多 200*200 像素,这时候按 40-60 个图片拼一张图可以控制单个图片不大,而流量降低 40 倍,再配合浏览器缓存,感觉这个更适合你的需求。
tool2d
2023-03-15 10:26:03 +08:00
开 http2 协议。

你访问 bbs.3dmgame.com ,从 network 面板上也能看到有 300 多个小图片,但是只用了一个 HTTPS 2 的 TCP 请求,全部图片都走新协议的 stream 多路复用技术。
pansongya
2023-03-15 10:27:11 +08:00
白嫖 马化腾的微信公众号
paopjian
2023-03-15 10:32:21 +08:00
统计一下使用频率,生成几个通用的雪碧图?又优化了大小也能优化请求次数
luguokong
2023-03-15 10:43:04 +08:00
base64 只影响首屏或者接口响应时长吧?还会浪费点流量
aoewlittlebear
2023-03-15 10:51:56 +08:00
svg ,写代码里都成
asmoker
2023-03-15 10:56:10 +08:00
多账号多云平台蹭免费额度
tomcats
2023-03-15 11:15:02 +08:00
Svg,base64 。还有个骚操作,把几张图片合成一个 gif ,然后前端把每一帧图片解析出来
zackzergzeng
2023-03-15 12:00:15 +08:00
不都是把小图标合并到一个图上,然后裁剪使用吗?这个应该有 webpack 插件支持
falcon05
2023-03-15 12:03:38 +08:00
1. 减少请求次数,2. 浏览器缓存
好像只能雪碧图了。
boneyao
2023-03-15 12:17:40 +08:00
@netnr 有没有对应的框架
woshinide300yuan
2023-03-15 13:09:36 +08:00
我是从阿里云转到了 ucloud ,又从 ucloud 转到了阿里云 HK 轻量上。 可惜了 ucloud 买的 50T 了,用了 8T 就跑路了。还好之前买的早,是无时间限制的套餐,现在都有时间限制了。 这么折腾是为啥呢,也是……为了省掉回源+HTTPS 计费+get 计费,哈哈哈……
DKburNIng
2023-03-15 18:31:35 +08:00
既然是小图,那 base64 也慢不了啥吧
zong400
2023-03-15 18:33:13 +08:00
华为云 cdn 不收 https 请求费

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/924067

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX