Chrome tworzy duplikaty sesji z tym samym identyfikatorem

Wystąpił problem podczas rewizji mojej biblioteki sesji dzisiaj i może to być pierwszy raz, gdy widziałem problem specyficzny dla przeglądarki na skrypcie zaplecza. Mam nadzieję, że ktoś może rzucić trochę światła.

Zasadniczo sposób działania biblioteki sesji: podczas tworzenia instancji sprawdza, czy na komputerze klienckim znajduje się plik cookie o nazwie „id” (w postaci jednoznacznego wyniku). Jeśli plik cookie zostanie znaleziony, skrypt sprawdza tę i zmieszaną kopię ciągu agenta użytkownika względem wpisów w tabeli sesji. Jeśli zostanie znaleziony pasujący wpis, skrypt wznawia sesję. Jeśli nie znaleziono pliku cookie o nazwie „id” lub jeśli w tabeli sesji nie ma pasującego wpisu, skrypt tworzy oba. Myślę, że dość standardowy.

Oto dziwna część: w Firefoksie wszystko działa zgodnie z przewidywaniami. Użytkownik otrzymuje jedną sesję, którą zawsze wznawia po nawiązaniu połączenia, o ile nie upłynęły 24 godziny braku aktywności. Ale kiedy odwiedzam stronę w Chrome, nawet jeśli wygląda tak samo i wydaje się, że wykonuje zapytania w tej samej kolejności, widzę dwa wpisy w tabeli sesji. Sesje współdzielą ciąg agenta, ale identyfikatory są różne, a dzienniki znaczników czasu wskazują, że sesja duchów jest tworzona wkrótce (w ciągu sekundy) po sesji utworzonej dla użytkownika.

Do celów debugowania drukowałem zapytania na ekranie w trakcie ich wykonywania, a to jest przykład tego, co widzę, gdy Chrome powinien otwierać jedną sesję i zamiast tego otwiera dwa;

// Attempting to resume a session
SELECT id FROM sessions WHERE id = '4fd24a5cd8df12.62439982' AND agent = '9bcd5c6aac911f8bcd938a9563bc4eca'

// No result, so it creates a new one
INSERT INTO sessions (id, agent, start, last) VALUES ('4fd24ef0347f26.72354606', '9bcd5c6aac911f8bcd938a9563bc4eca', '1339182832', '1339182832')

// Clear old sessions
DELETE FROM sessions WHERE last < 1339096432

A oto, co widzę później w bazie danych:

id, agent, start, last
4fd24ef0347f26.72354606, 9bcd5c6aac911f8bcd938a9563bc4eca, 1339182832, 1339182832
4fd24ef0857f94.72251285, 9bcd5c6aac911f8bcd938a9563bc4eca, 1339182833, 1339182833

Czy brakuje mi czegoś oczywistego? Jedyne, co mogę pomyśleć, to to, że Chrome może tworzyć ukrytą sesję w tle, być może do zaindeksowania strony. Jeśli jednak tak jest, może to stać się problemem później, gdy zacznę kojarzyć aktywne sesje z wpisami w tabeli użytkowników. Szukałem możliwych błędów w moim skrypcie, ale do tej pory nie znalazłem niczego i wszystko działa zgodnie z oczekiwaniami w Firefoksie.

questionAnswers(1)

yourAnswerToTheQuestion