Firefox синхронизирует запросы на одну и ту же страницу? - PullRequest
0 голосов
/ 19 июля 2010

Я использую Firefox 3.6.6.

У меня есть PHP-скрипт с именем index.php со следующим кодом:

<?php
sleep(20); die(time());
?>

Я открываю две вкладки браузера, копирую URLв каждом из них, а затем быстро нажмите Enter на каждой вкладке.Первая вкладка завершается чуть более 20 секунд.Вторая вкладка завершается всего за 40 секунд.

Я выполняю один и тот же эксперимент в IE, и оба сценария завершаются за одну секунду, около 20 секунд.

Это ожидаемое поведение?Фактический сценарий, который заставил меня проверить это, является синхронной процедурой.Я хочу, чтобы любой человек, пытавшийся выполнить его дважды, получил сообщение об ошибке, что процесс уже выполняется, вместо того, чтобы браузер сидел там и ждал, пока он не выполнит его во второй раз.

Если это как Firefoxработает, как он определяет, когда страница является дубликатом и что она должна ставить в очередь запросы, а не запускать их одновременно?

Я могу обмануть это, поместив ненужную строку GET в конец, например index.phpи index.php?JUNK=1 оба завершаются примерно за 20 секунд.

1 Ответ

2 голосов
/ 19 июля 2010

Это механизм кеширования: если вы отключите все кеширование, проблема не возникнет.По-видимому, разработчики FF проверяют, что, когда запрос все еще загружается, он может быть кэширован, поэтому он ждет первого, только затем решает не использовать кэш и только затем отправляет второй запрос (вы можете проверить это в метке времени.из ваших файлов журнала).

Вы можете попытаться поиграться с некоторыми заголовками без кэширования и сбросом данных к клиенту, возможно, он может определить, что кэширование не подходит при получении заголовков, хотя я подозреваю, что проверка кэша выполненатолько после загрузки контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...