Chrome移动版加载PHP两次?

时间:2015-09-28 15:33:19

标签: php html mysql google-chrome nginx

我遇到的问题是,Chrome移动设备会将页面加载一次,并在一秒钟之后再次加载页面。这仅在服务器日志中可见。这通常不会成为问题,但是我使用加载的页面通过查询将+1发送到MySQL数据库。因此,当带有Chrome的移动设备上的某个人访问该页面而不是+1时,我得到+2。这是有问题的。

服务器日志:

141.101.98.206 - - [28/Sep/2015:16:18:12 +0100] "GET /vfm-admin/vfm-downloader.php?q=***=&h=***&sh=***&t=***&n=***HTTP/1.1" 200 483 "https://new.***.net/?dl=***" "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LMY48P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2519.0 Mobile Safari/537.36"
141.101.98.206 - - [28/Sep/2015:16:18:13 +0100] "GET /vfm-admin/vfm-downloader.php?q=***=&h=***&sh=***&t=***&n=***HTTP/1.1" 200 144 "https://new.***.net/?dl=***" "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LMY48P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2519.0 Mobile Safari/537.36"

我在网上找到了这个:https://code.google.com/p/chromium/issues/detail?id=64810 但在实施了所有建议后,问题仍然存在,但仅限于移动设备。

我试图通过使用会话解决问题,但由于脚本还提供了一个文件来下载它只是将if会话错误消息作为文件下载,请参阅:

if(isset($_SESSION['user']))
{
echo "Session error, if issue persists please clear your cache</br>";
echo "<a href=\"javascript:history.go(-1)\">Back to download</a></br>";
exit();
}
else
{
//download function
}

更新1:

根据建议我用下载标题替换了错误回声,这在移动设备上运行良好。但是,如果if语句随后在桌面上被触发,它将无限地加载,两端都没有错误。

if(isset($_SESSION['user']))
{
 $headers = $downloader->getHeaders($getfile);
 $downloader->aDownload(
            $headers['file'], 
            $headers['filename'], 
            $headers['file_size']
   );
 exit();
 }
 else
 {
 // download function
 }

2 个答案:

答案 0 :(得分:0)

Chrome&amp; Safari将&#34;预取&#34;一些页面可以加快导航的加载时间。

您可以通过检测细节标题来阻止它:X-Purpose: preview&amp; X-moz: prefetch

答案 1 :(得分:0)

正如评论中所说,here你可以找到很多此类行为的案例及其解决方案。

要找出导致此问题的代码中的位置,您可以打开Chrome的开发者工具,设置移动模式,打开网络标签,然后输入&#34; vfm-admin / vfm过滤所有请求-downloader.php&#34;进入Filter textfiled。

如果您看到两次相同的请求,您将能够在Initiator列中看到负责此类行为的JS或CSS文件。