| |
166 |
166 |
# Just record data containing this information. |
| |
167 |
167 |
# |
| |
168 |
168 |
# Other entries have often strange t_done values: e.g. a |
| |
169 |
169 |
# reload of a page, having an automatic refresh after many |
| |
170 |
170 |
# refreshes will cause such a beacon GET request with a |
| |
171 |
171 |
# t_done time span reaching to the original load of the |
| |
172 |
172 |
# page. |
| |
173 |
173 |
# |
| |
174 |
174 |
if { |
| |
175 |
175 |
[dict exists $entries nt_con_st] |
| |
176 |
176 |
&& [dict exists $entries nt_req_st] |
| |
177 |
177 |
} { |
| |
178 |
178 |
# |
| |
179 |
179 |
# Add nt_*_time variables according to the "Navigation Timing" W3C recommendation |
| |
180 |
180 |
# up to domComplete (see https://www.w3.org/TR/navigation-timing/#processing-model) |
| |
181 |
181 |
# |
| |
182 |
182 |
dict set entries nt_start_time [expr {[dict get $entries nt_req_st] - [dict get $entries nt_nav_st]}] |
| |
183 |
183 |
dict set entries nt_tcp_time [expr {[dict get $entries nt_con_end] - [dict get $entries nt_con_st]}] |
| |
184 |
184 |
dict set entries nt_request_time [expr {[dict get $entries nt_res_st] - [dict get $entries nt_req_st]}] |
| |
185 |
185 |
dict set entries nt_response_time [expr {[dict get $entries nt_res_end] - [dict get $entries nt_res_st]}] |
| |
186 |
|
if {![dict get $entries nt_domcomp]} { |
| |
|
186 |
if {![dict exists $entries nt_domcomp]} { |
| |
187 |
187 |
dict set entries nt_processing_time 0 |
| |
188 |
188 |
} else { |
| |
189 |
189 |
dict set entries nt_processing_time [expr {[dict get $entries nt_domcomp] - [dict get $entries nt_res_end]}] |
| |
190 |
190 |
} |
| |
191 |
191 |
dict set entries nt_total_time [expr {[dict get $entries nt_load_end] - [dict get $entries nt_nav_st]}] |
| |
192 |
192 |
|
| |
193 |
193 |
# |
| |
194 |
194 |
# Sanity checks for the computed fields: |
| |
195 |
195 |
# - no *_time can be larger than t_done |
| |
196 |
196 |
# - no *_time must be negative |
| |
197 |
197 |
# - check for unrealistic high t_done times (caused be technicalities) |
| |
198 |
198 |
set t_done [dict get $entries t_done] |
| |
199 |
199 |
set max_time [expr {$t_done + 1}] |
| |
200 |
200 |
set time_fields { |
| |
201 |
201 |
nt_start_time nt_tcp_time nt_request_time nt_response_time |
| |
202 |
202 |
nt_processing_time nt_total_time |
| |
203 |
203 |
} |
| |
204 |
204 |
foreach time_field $time_fields { |
| |
205 |
205 |
set v [dict get $entries $time_field] |
| |
206 |
206 |
if {$v < 0 || $v > $max_time} { |