Image HTTP重定向图像可以吗?

Image HTTP重定向图像可以吗?,image,http,redirect,http-headers,Image,Http,Redirect,Http Headers,返回图像资源时是否可以返回301/302/303代码?我过去也做过这件事,而且似乎很管用。这是一种良好的做法,并且与大多数浏览器兼容吗?是的,它可以工作 关于良好实践,有哪些替代方案?返回错误响应(404)?不是很有帮助。是否返回重定向资源将返回的映像?可能不可能,否则您不会重定向。用新的URL修复img标签?当然,在可能的情况下,但您可能希望浏览器执行重定向(可能是计数器)。如果代码实际反映了现实情况,则无所谓——例如,如果图像确实永久移动,则应使用301。是的,您可以重定向图像,浏览器将遵循

返回图像资源时是否可以返回301/302/303代码?我过去也做过这件事,而且似乎很管用。这是一种良好的做法,并且与大多数浏览器兼容吗?

是的,它可以工作


关于良好实践,有哪些替代方案?返回错误响应(404)?不是很有帮助。是否返回重定向资源将返回的映像?可能不可能,否则您不会重定向。用新的URL修复img标签?当然,在可能的情况下,但您可能希望浏览器执行重定向(可能是计数器)。

如果代码实际反映了现实情况,则无所谓——例如,如果图像确实永久移动,则应使用301。是的,您可以重定向图像,浏览器将遵循重定向。但出于性能原因,您通常希望将重定向保持在最小值,因为每个重定向都需要一个单独的HTTP请求,这会增加服务器开销并稍微增加最终用户页面加载时间

你绝对应该避免的一件事是重定向页面上的许多图像。这将严重降低页面加载时间,尤其是在高延迟网络(如电话、中国、卫星互联网)上,因为每个新的HTTP请求都需要很长时间。此外,HTTP客户端仅限于每个服务器主机名同时进行少量HTTP连接,因此即使在高速网络上,您最终也会遇到瓶颈

然而,在一个页面上重定向1到2个图像并不是什么大问题

如果重定向图像且图像可缓存,则理想情况下应为遥远的将来的某个日期设置HTTP Expires标头(以及相应的缓存控制标头),以便至少在后续访问页面时,用户不必再次执行重定向


如果重定向的原因是为了符合新的URL方案,那么大多数web服务器都可以轻松地在服务器上重写URL,而无需将实际重定向发送回客户端。换句话说,客户端可以请求
/static/bar.jpg
,但服务器可以配置为将其转换为
/media/images/bar.jpg
。在大多数情况下,这种URL重写方法比重定向更可取,因为您可以重构内容在服务器上的位置,而不会在客户端或服务器端产生重定向开销

我不是在提倡301或重写,因为这取决于哪个项目更可取,但我想提到一个额外的重写考虑。重写不是免费的,它们需要一定程度的额外处理资源。在许多情况下,这并不重要,因为总资源消耗与重写复杂性和执行次数相对应。我只是想确保每个人都明白这两种方法都有其成本,每个潜在的解决方案也是如此。我只是想指出一个非常合理的用例:将“本地”图像重定向到CDN