通过脚本重定向图像是否是一种不好的做法


Is it bad practice to redirect an image through a script?

这样做不好吗?

索引.php

<img src = "image.php"/>

图片.php

header('location: /location/to/another/image.jpg');

你可能在看这种想法"他到底为什么要这样做"。以上只是我正在做的事情的简单场景,我只想知道这样做是否"可以接受"?

当然,你可以这样做,但你可能会注意到 PHP 也可以只返回图像的字节和适当的标头(内容类型等); 如果你想要的只是让你的图像请求被PHP"解析"。因此,您的图像.php请求可能是唯一的请求。

请参阅 PHP 文档页面上的示例脚本以了解 fpassthru

它并不可怕,但大多数建议是在不需要时不要重定向链接/url,因为它会减慢页面加载速度(就像做两个ping而不是一个乘以每个图像)

还建议配置您的网络服务器以执行类似操作。我使用nginx,并且我已经为一个站点的一部分完成了此操作(它确认用户已登录以查看其未发布的文件)。但这使用的是 x-accel-redirect 标头,它不是真正的重定向,而只是告诉服务器它应该为该特定文件提供服务。

这取决于有多少用户访问此页面。正如acidzombie24所提到的,这样的重定向会减慢您的服务器速度。但是,当您的服务器配置正确并且Connection: keep-alive受支持时,它将不需要第二个连接,而只需要同一连接中的第二个请求。

据我了解,您试图通过在 URL 末尾附加唯一 ID 来阻止浏览器缓存这些图像。

重定向时,您将告诉标头中的浏览器忘记此请求并发起对另一个 URL 的请求,因此每个图像请求都会收到两个请求。

与其

强制浏览器在image.php中重定向,不如只加载图像文件,它将具有与重定向浏览器相同的影响(即没有缓存),但不需要另一个请求。

在 HTML 中:

<img src="image.php?id=whatever" />

image.php

readfile( 'location/to/another/image.jpg'); // local file system path needed

做。浏览器没有缓存,也没有另一个请求的额外开销。

相关文章: