为什么 Twitter (twimg.com) 使用大小后缀(例如“:large”)而不是查询参数
Why does Twitter (twimg.com) use a suffix for size (e.g. ':large') instead of a query parameter
为什么 Twitter (twimg.com) 使用大小后缀(例如“:large”)而不是查询参数?
示例:
https://pbs.twimg.com/media/CrhajQHXgAEQ2US.jpg:large
从架构的角度来看,我觉得这很有趣,我想知道我是否遗漏了什么。
他们这样做是因为某些 proxies/clients 不缓存带有查询参数的网址吗?
任何人都可以阐明这一点吗?
我不确定这是由于缓存问题引起的,但有一个语义问题。 URL https://pbs.twimg.com/media/CrhajQHXgAEQ2US.jpg:large
指向某个资源。该资源是 CrhajQHXgAEQ2US.jpg:large
。它不是 CrhajQHXgAEQ2US.jpg
,因为它可能在带有查询字符串的情况下。
根据 https://developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/object-model/entities#photo_format ,使用后缀是一种已弃用的格式,并且他们已经移动(从 2015 年开始,但到 2017 年完全内部使用)到查询参数版本。给出的理由是:
Using the modern format will result in better CDN hit rate for the
caller, thus improving load latencies by being less likely to have to
generate and load the media from the Data Center.
(从那个页面开始,'modern',首选 URL 将是 https://pbs.twimg.com/media/CrhajQHXgAEQ2US?format=jpg&name=large
。)
所以我的猜测——强调我的和猜测——要么是在早期他们决定使用后缀格式而没有完全考虑什么更容易缓存,或者你是对的,但是缓存在 2010 年代中期赶上了查询参数。
为什么 Twitter (twimg.com) 使用大小后缀(例如“:large”)而不是查询参数?
示例:
https://pbs.twimg.com/media/CrhajQHXgAEQ2US.jpg:large
从架构的角度来看,我觉得这很有趣,我想知道我是否遗漏了什么。
他们这样做是因为某些 proxies/clients 不缓存带有查询参数的网址吗?
任何人都可以阐明这一点吗?
我不确定这是由于缓存问题引起的,但有一个语义问题。 URL https://pbs.twimg.com/media/CrhajQHXgAEQ2US.jpg:large
指向某个资源。该资源是 CrhajQHXgAEQ2US.jpg:large
。它不是 CrhajQHXgAEQ2US.jpg
,因为它可能在带有查询字符串的情况下。
根据 https://developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/object-model/entities#photo_format ,使用后缀是一种已弃用的格式,并且他们已经移动(从 2015 年开始,但到 2017 年完全内部使用)到查询参数版本。给出的理由是:
Using the modern format will result in better CDN hit rate for the caller, thus improving load latencies by being less likely to have to generate and load the media from the Data Center.
(从那个页面开始,'modern',首选 URL 将是 https://pbs.twimg.com/media/CrhajQHXgAEQ2US?format=jpg&name=large
。)
所以我的猜测——强调我的和猜测——要么是在早期他们决定使用后缀格式而没有完全考虑什么更容易缓存,或者你是对的,但是缓存在 2010 年代中期赶上了查询参数。