意外的Safari页面加载计数行为 客户 Mac OS 10.15.3 服务器 Ubuntu 18.04.4 Apache 2.4.29 PHP7.4.5
获取一个脚本,将其命名为/test.php。让我们跟踪每个用户体验的可视页面加载实际发生的页面加载数量意外的Safari页面加载计数行为 客户 Mac OS 10.15.3 服务器 Ubuntu 18.04.4 Apache 2.4.29 PHP7.4.5,php,apache,safari,Php,Apache,Safari,获取一个脚本,将其命名为/test.php。让我们跟踪每个用户体验的可视页面加载实际发生的页面加载数量 # Count = 1 test.php?v=1 # Count = 2 test.php?v=1 # Count = 4 (???) test.php?v=2 # Count = 7 (???) test.php?v=1 # Count = 8 test.php?v=1 # Count = 10 (???) test.php?v=3 # Count = 11 test.php?v=3 #
# Count = 1
test.php?v=1
# Count = 2
test.php?v=1
# Count = 4 (???)
test.php?v=2
# Count = 7 (???)
test.php?v=1
# Count = 8
test.php?v=1
# Count = 10 (???)
test.php?v=3
# Count = 11
test.php?v=3
# Count = 15 (???)
test.php?v=2
# Count = 18 (???)
test.php?v=1
在Chrome中,负载的数量与预期一样-1、2、3,然后是4、5等
此外,如果您在私有窗口中执行此操作,Safari的行为与Chrome的行为一样符合预期
为什么Safari会这样?堆栈中是否有其他方面的贡献,例如Apache或PHP
编辑1
一个较小测试用例的Apache日志(!!!)test.php?v=3被记录,尽管我不是故意请求的
# Procedure
test.php?v=1
test.php?v=1
test.php?v=2
编辑2
下面是test.php的精简内容。需要Redis和PHP Redis,因为我正在使用它来快速可视化。当然,如果愿意,您可以使用Apache日志,也可以使用任何其他方式快速查看脚本的执行次数
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo $redis->incr('counter');
这里没有足够的信息。test.php
在做什么?您是否查看了Apache日志以了解页面负载的确切数量?你看过浏览器中的NetworkDeveloper选项卡了吗?test.php是一个空白页面,上面有一些MySQL和Redis日志,以确保我不会发疯。您可以从我在编辑中输入的Apache日志示例中看到(感谢您提出的澄清),Safari甚至调用了test.php?v=3,我以前访问过它,但不是按照这个顺序。我怀疑这是由于Safari进行了一些优化,以加快将来的加载,因为它不是在私有模式下发生的。还有更多的理由尊重HTTP动词的含义吗?因为这意味着如果有人将非GET功能放在GET路径中,可能会发生真正不受欢迎的行为。这里没有足够的信息。test.php
在做什么?您是否查看了Apache日志以了解页面负载的确切数量?你看过浏览器中的NetworkDeveloper选项卡了吗?test.php是一个空白页面,上面有一些MySQL和Redis日志,以确保我不会发疯。您可以从我在编辑中输入的Apache日志示例中看到(感谢您提出的澄清),Safari甚至调用了test.php?v=3,我以前访问过它,但不是按照这个顺序。我怀疑这是由于Safari进行了一些优化,以加快将来的加载,因为它不是在私有模式下发生的。还有更多的理由尊重HTTP动词的含义吗?因为这意味着,如果有人将非GET功能放在GET路径中,可能会发生真正不受欢迎的行为。
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo $redis->incr('counter');