我在 WAMP 堆栈上并且有下面一行代码 demo.html
<img src="http://localhost/redirect/demo.php"></img>
demo.php
代码如下
<?php
header("Location: http://localhost/redirect/blah");
exit();
?>
当我将 demo.html
更改为使用 script 标签与 img 标签时,在响应时间内没有问题
<script src="http://localhost/redirect/demo.php"></script>
不确定为什么 IMG 标签会发生这种情况。谁能解释为什么会发生这种情况以及如何避免这种情况?有没有其他方法可以在没有 javascript 解决方案的情况下通过 302 加载 IMG。
注意 - 相信这不是 PHP/WAMP 问题,因为当我直接调用 http://localhost/redirect/demo.php
时,响应时间不会受到影响.相信这与浏览器、它的渲染、它的加载事件有关。
最佳答案
如果我没记错的话,脚本是同步加载的,而图像是异步排队和加载的。
所以我的理解是,如果你使用 script 标签,浏览器会等待加载发送 302 的 http://localhost/redirect/demo.php
。这会强制浏览器在加载任何其他内容之前执行 http://localhost/redirect/blah
。
相反,如果您使用 img 标签,浏览器会执行 http://localhost/redirect/demo.php
并继续加载页面的剩余部分。当 demo.php 返回 302 时,http://localhost/redirect/blah
被添加到要加载的 URL 队列中。因此,加载图像的总体时间更长。
不确定是否可以避免它。在 demo.php 上启用缓存可能有助于后续请求。
关于php - 302 图像在浏览器中重定向速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386916/