Chrome手机加载PHP两次?

我有一个问题,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" 

我在网上find了这个: https : //code.google.com/p/chromium/issues/detail?id = 64810,但是在实施了所有build议之后,问题仍然存在,但只在移动设备上。

我试图通过使用会话来解决问题,但是由于脚本也提供了一个文件来下载它,只是将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:

根据build议,我用下载头replace错误回声,这在移动工作正常。 但是,如果if语句在桌面上被触发了,那么在任何一端都会无休止地加载并且没有错误。

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

Chrome和Safari将“预取”一些页面,以加快导航的加载时间。

您可以通过检测特定标X-moz: prefetch防止它: X-Purpose: previewX-moz: prefetch

正如评论所说, 在这里你可以找到很多这样的行为和他们的解决方案。

要找出导致此问题的代码位置,您可以打开Chrome的开发者工具,设置移动模式,打开网络标签,并通过在Filter文本文件中输入“vfm-admin / vfm-downloader.php”来过滤所有请求。

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