我很想知道人们将如何解决这个问题,或者是否可以使用重定向来完成。
在网站上,一个常见的问题是有一个图标来代表一个资源(比如一个用户),如果这个资源不存在,有一个默认图标。
现在说我想在标记中解决这个问题,那么它很简单:
# Default for user without an icon
<img src="/images/default.png" alt="theozaurus">
# For user with an icon
<img src="/images/users/theozaurus.png" alt="theozaurus">
但是,在某些情况下这可能会很痛苦:
- 预呈现标记(用户可能会在创建标记后上传图标)
- 在浏览器中动态生成的标记(发现用户是否有图标可能会很昂贵,相反,最好有简单/快速的逻辑来生成正确的 url)。
所以解决方案似乎很明显:
<img src="/images/users/theozaurus.png" alt="theozaurus">
然后该应用程序可以返回默认图标,或已上传的正确图标。这是低效的,好像我有一个包含 100 个这些图标的页面,其中 90% 是默认图标,我有效地下载了 90 次相同的图像,只是因为我不想处理预渲染或动态产生标记问题。
如果我使用重定向解决了这个问题,它会起作用吗(保持理智) - 并且缓存仍然有效。
例如 a GET
to/images/users/theozaurus.png
可以返回 a 302 /images/default.png
。然后当theozaurus上传一个图标时,它会返回200 <unique icon>
浏览器会在重定向时获得缓存命中吗?我在这里错过了什么陷阱吗?