2

这样做不好吗?

索引.php

<img src = "image.php"/>

图像.php

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

您可能正在考虑“他为什么要这样做”。以上只是我正在做的一个简单场景,我只想知道这样做是否“可以接受”?

4

4 回答 4

4

当然,你可以这样做,但你可能会注意到 PHP 也可以只返回图像的字节和适当的标题(内容类型等);如果您所追求的只是让PHP“解析”您的图像请求。所以你的 image.php 请求可以是唯一的请求。

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

于 2012-08-05T19:07:24.923 回答
1

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

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

于 2012-08-05T19:05:32.683 回答
0

据我了解,您试图通过在 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

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

于 2012-08-05T19:17:08.767 回答
0

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

于 2012-08-05T19:09:09.197 回答