这样做不好吗?
索引.php
<img src = "image.php"/>
图像.php
header('location: /location/to/another/image.jpg');
您可能正在考虑“他为什么要这样做”。以上只是我正在做的一个简单场景,我只想知道这样做是否“可以接受”?
当然,你可以这样做,但你可能会注意到 PHP 也可以只返回图像的字节和适当的标题(内容类型等);如果您所追求的只是让PHP“解析”您的图像请求。所以你的 image.php 请求可以是唯一的请求。
它并不可怕,但大多数建议是不要在不需要时重定向链接/网址,因为它会减慢页面加载速度(就像做两次 ping 而不是每张图片乘以一次)
还建议配置您的网络服务器来做类似的事情。我使用 nginx,并且我已经为一个站点的一部分完成了此操作(它确认用户已登录以查看他们未发布的文件)。但这是使用 x-accel-redirect 标头,它不是真正的重定向,只是告诉服务器它应该为该特定文件提供服务。
据我了解,您试图通过在 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
完毕。浏览器没有缓存,也没有另一个请求的额外开销。
这取决于有多少用户访问此页面。正如acidzombie24 所提到的,这样的重定向会减慢您的服务器速度。但是,当您的服务器配置正确并Connection: keep-alive
受支持时,它不需要第二个连接,而在同一连接中只需要第二个请求。