302图像在浏览器中重定向较慢

时间:2015-10-28 09:10:44

标签: php html image redirect browser

我在一个WAMP堆栈上,并拥有demo.html

的以下一行代码
<img src="http://localhost/redirect/demo.php"></img>

demo.php代码如下

<?php
header("Location: http://localhost/redirect/blah");
exit();
?>

代码工作正常。但在内容下载期间有很长的响应时间 Response time using IMG tag

当我将demo.html更改为使用脚本代码与img标记时,在响应时间内没有问题

<script src="http://localhost/redirect/demo.php"></script>

Response time using SCRIPT tag

不确定为什么IMG标签会发生这种情况。任何人都可以解释为什么会发生这种情况,我该如何避免这种情况?有没有其他方法可以在没有javascript解决方案的情况下通过302加载IMG。

注意 - 相信这不是PHP / WAMP问题,因为当我直接调用 http://localhost/redirect/demo.php 时,响应时间不受影响。相信这与浏览器,它的渲染,它的加载事件有关。

3 个答案:

答案 0 :(得分:2)

如果我没错,脚本会同步加载,而图像会异步排队和加载。

所以我的理解是,如果您使用脚本标记,浏览器会等待加载发送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上启用缓存有助于后续请求。

答案 1 :(得分:0)

根据图片重定向的使用情况,您可以查看URL Rewriting

我不确定这是一个很好的解决方案,因为您的示例代码不在上下文中。

您还可以查看此问题,该问题可为您提供其他信息:Is it OK to HTTP redirect images?

答案 2 :(得分:0)

使用.htaccess:

RewriteEngine on
RewriteRule ^redirect/demo.php$ /redirect/blah [QSA,L]

如果你想拥有&#34; blah&#34;您可以使用反向代理的其他服务器上的文件/脚本请参阅:https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension