为什么 Twitter (twimg.com) 使用大小的后缀(例如 ':large')而不是查询参数?
例子:
https://pbs.twimg.com/media/CrhajQHXgAEQ2US.jpg:large
从架构的角度来看,我觉得这很有趣,我想知道我是否遗漏了什么。
他们这样做是因为某些代理/客户端不缓存带有查询参数的网址吗?
任何人都可以对此有所了解吗?
例子:
https://pbs.twimg.com/media/CrhajQHXgAEQ2US.jpg:large
从架构的角度来看,我觉得这很有趣,我想知道我是否遗漏了什么。
他们这样做是因为某些代理/客户端不缓存带有查询参数的网址吗?
任何人都可以对此有所了解吗?
根据https://developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/object-model/entities#photo_format,使用后缀是一种已弃用的格式,它们已经移动(从2015,但到 2017 年完全内部使用)到查询参数版本。给出的理由是:
使用现代格式将为调用者带来更好的 CDN 命中率,从而通过减少从数据中心生成和加载媒体的可能性来改善加载延迟。
(从该页面中,“现代”首选 URL 将是https://pbs.twimg.com/media/CrhajQHXgAEQ2US?format=jpg&name=large
。)
所以我的猜测——强调我的猜测——要么是他们在早期决定使用后缀格式,但没有完全考虑什么更容易缓存,或者你是对的,但是缓存赶上了查询2010 年代中期的参数。
我不确定这是由于缓存的一些问题,但有一个语义点。URLhttps://pbs.twimg.com/media/CrhajQHXgAEQ2US.jpg:large
指向某个资源。而那个资源是CrhajQHXgAEQ2US.jpg:large
. 它 CrhajQHXgAEQ2US.jpg
与查询字符串的情况不同。