Я создаю расширение с помощью Firefox ADD ON SDK (v1.9), которое сможет читать все HTTP-запросы/ответы и вычислять время их загрузки. Сюда входит не только основной фрейм, но и любой другой загружаемый файл (подкадр, скрипт, css, изображение и т. д.).
Пока что я могу использовать модуль «observer-service» для прослушивания:
- «http-on-modify-request» при создании HTTP-запроса.
- "http-on-examine-response" при получении HTTP-ответа
- «http-on-examine-cached-response», когда ответ HTTP полностью получен из кеша
- «http-on-examine-merged-response», когда ответ HTTP частично получен из кеша
Мое приложение следует следующей последовательности:
- Запрос создается и регистрируется через обозреватель.
- Я сохраняю текущее время и отмечаю его как start_time загрузки запроса.
- Ответ на запрос принимается и регистрируется через одного из наблюдателей.
- Я сохраняю текущее время и использую ранее сохраненное время для расчета времени загрузки запроса.
Проблема: я не могу связать время начала и окончания загрузки, так как не могу найти идентификатор запроса (или другое уникальное значение), который свяжет запрос с ответом. В настоящее время я использую URL-адрес запроса/ответа, чтобы связать их вместе, но это неправильно, поскольку это вызовет «состояние гонки», если два или более одинаковых URL-адреса загружаются одновременно. Google Chrome решает эту проблему, предоставляя уникальные идентификаторы запросов, но мне не удалось найти аналогичную функциональность в Firefox.