【发布时间】:2023-03-10 08:30:02
【问题描述】:
返回图片资源时返回301/302/303码可以吗?我过去做过这个,它似乎有效。这是一种好的做法吗?它是否与大多数浏览器兼容?
【问题讨论】:
标签: image http redirect http-headers
返回图片资源时返回301/302/303码可以吗?我过去做过这个,它似乎有效。这是一种好的做法吗?它是否与大多数浏览器兼容?
【问题讨论】:
标签: image http redirect http-headers
是的,您可以重定向图像,浏览器将遵循重定向。但出于性能原因,您通常希望将重定向保持在最低限度,因为每个重定向都需要单独的 HTTP 请求,这会增加服务器开销并稍微增加最终用户页面加载时间。
您绝对应该避免的一件事是重定向页面上的许多图像。这将严重减慢页面加载时间,尤其是在每个新的 HTTP 请求都需要很长时间的高延迟网络(例如电话、中国、卫星互联网)上。此外,HTTP 客户端仅限于每个服务器主机名的少量同时 HTTP 连接,因此即使在快速网络上,您最终也会遇到瓶颈。
但是,在页面上重定向 1 或 2 个图像并不是什么大问题。
如果您重定向图像并且它们是可缓存的,那么理想情况下,您应该为遥远的将来的某个日期设置一个 HTTP Expires 标头(以及相应的 Cache-Control 标头),这样至少在用户后续访问该页面时会赢不必再次通过重定向。
如果您进行重定向的原因是为了符合新的 URL 方案,那么大多数 Web 服务器都有一种简单的方法来重写服务器上的 URL,而无需将实际的重定向发送回客户端。换句话说,客户端可以请求/static/bar.jpg,但服务器可以配置为将其转换为/media/images/bar.jpg。在大多数情况下,这种 URL 重写方法比重定向更可取,因为您可以重构内容在服务器上的位置,而不会在客户端或服务器端产生重定向开销。
【讨论】:
是的,它有效。
关于良好实践,有哪些替代方案?返回错误响应(404)?不是很有帮助。返回重定向资源将返回的图像?可能不可能,否则你不会重定向。使用新 URL 修复 img 标签?当然,在可能的情况下,但也许您希望浏览器彻底重定向(可能是一个计数器)。
【讨论】:
如果代码确实反映了现实也没关系 - 例如,如果图像确实永久移动,您应该使用 301。
【讨论】: