HTTP重定向图像可以吗?

时间:2010-09-23 12:29:32

标签: image http redirect http-headers

返回图像资源时是否可以返回301/302/303代码?我过去做过这个,似乎有效。这是一种很好的做法,是否与大多数浏览器兼容?

3 个答案:

答案 0 :(得分:43)

是的,您可以重定向图片,浏览器会遵循重定向。但是出于性能原因,您通常希望将重定向保持在最低限度,因为每个重定向都需要单独的HTTP请求,这会增加服务器开销并增加最终用户页面加载时间。

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

然而,重定向页面上的1或2个图像并不是什么大问题。

如果您重定向图像并且它们是可缓存的,那么理想情况下,您可以在遥远的未来为日期设置HTTP Expires标头(以及相应的Cache-Control标头),因此至少在后续访问页面的用户中获胜不得不再次进行重定向。

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

答案 1 :(得分:6)

是的,它有效。

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

答案 2 :(得分:6)

如果代码实际上反映了现实,那就没关系了 - 例如,如果图像确实永久地移动了,那么应该使用301。