我有一个问题,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: preview
& X-moz: prefetch
。
正如评论所说, 在这里你可以找到很多这样的行为和他们的解决方案。
要找出导致此问题的代码位置,您可以打开Chrome的开发者工具,设置移动模式,打开网络标签,并通过在Filter
文本文件中输入“vfm-admin / vfm-downloader.php”来过滤所有请求。
如果您看到相同的请求两次,您将能够在Initiator
列中看到JS或CSS文件,这是负责这种行为。