我遇到的问题是,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
}
答案 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文件。