Клиент
Сервер
- Ubuntu 18.04.4
- Apache 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 и др. c.
Более того, 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
Вот урезанное содержание теста. php. Требуются Redis и PHP -Redis, так как я использую это для быстрой визуализации. Конечно, вместо этого вы можете использовать Apache logs, если вы используете sh, или любой другой способ быстро увидеть количество выполнений скрипта.
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo $redis->incr('counter');