Просмотр исходного кода

Merge pull request #4110 from overleaf/jpa-omit-skewed-render-latency

[frontend] PdfJsMetrics: omit render time in case we detect hidden page

GitOrigin-RevId: b1ae3b29dbb9764cf67f2f1b1e2f93c83fe67426
Jakob Ackermann 5 лет назад
Родитель
Сommit
e1516aab2c

+ 5 - 1
services/web/frontend/js/ide/pdf/controllers/PdfJsMetrics.js

@@ -19,7 +19,11 @@ export function trackPdfDownload(response, compileTimeClientE2E) {
     // The renderer does not yield in case the browser tab is hidden.
     // It will yield when the browser tab is visible again.
     // This will skew our performance metrics for rendering!
-    const latencyRender = timePDFRendered - timePDFFetched
+    // We are omitting the render time in case we detect this state.
+    let latencyRender
+    if (timePDFRendered) {
+      latencyRender = timePDFRendered - timePDFFetched
+    }
     done({ latencyFetch, latencyRender })
   }
   function updateConsumedBandwidth(bytes) {

+ 11 - 0
services/web/frontend/js/ide/pdfng/directives/pdfRenderer.js

@@ -363,6 +363,17 @@ export default App.factory(
                 return
               } // return from cancelled page load
               const timePDFFetched = performance.now()
+
+              const visible = !document.hidden
+              if (!visible) {
+                // Flush the fetch time early, omit the render time.
+                if (typeof this.options.firstRenderDone === 'function') {
+                  this.options.firstRenderDone({ timePDFFetched })
+                  // Do not submit the actual rendering time.
+                  this.options.firstRenderDone = null
+                }
+              }
+
               pageState.renderTask = this.doRender(element, pagenum, pageObject)
               return pageState.renderTask.promise.then(
                 () => {