客户
- Mac OS 10.15.3
服务器
- Ubuntu 18.04.4
- 阿帕奇 2.4.29
- PHP 7.4.5
获取一个脚本,将其命名为 /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 = 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
# Apache Log of above page loads with IP redacted.
REDACTED_IP - - [20/Apr/2020:11:35:26 +0000] "GET /test.php?v=1 HTTP/1.1" 200 8875 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
REDACTED_IP - - [20/Apr/2020:11:35:28 +0000] "GET /test.php?v=1 HTTP/1.1" 200 5141 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
REDACTED_IP - - [20/Apr/2020:11:35:42 +0000] "GET /test.php?v=3 HTTP/1.1" 200 8876 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
REDACTED_IP - - [20/Apr/2020:11:35:42 +0000] "GET /test.php?v=2 HTTP/1.1" 200 5141 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
REDACTED_IP - - [20/Apr/2020:11:35:43 +0000] "GET /test.php?v=2 HTTP/1.1" 200 5705 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
编辑 2
以下是 test.php 的精简内容。需要 Redis 和 PHP-Redis,因为我正在使用它来快速查看。如果您愿意,当然可以使用 Apache 日志,或者任何其他方式来快速查看脚本已执行的次数。
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo $redis->incr('counter');