Маяк забил для прогрессивного веб-приложения - PullRequest
1 голос
/ 13 марта 2019

https://yourstop.info - это PWA.Когда я запускаю на нем маяк, показатель PWA достигает 73, а производительность - 60, см. Изображение ниже.

enter image description here

Время взаимодействия составляет 19,1 секунды, что является причиной низкой оценки.Что происходит при запуске, так это то, что когда местоположение пользователя определено, список соответствующих автобусных остановок загружается в фоновом режиме.Код для этого

  var firstLocationUpdate = false;
  //var firstLocationUpdate = true;
  
  if (navigator.geolocation) {
    navigator.geolocation.watchPosition(updatePosition, showError, geoOptions);
  }
  else {
    window.ys.userLocationError = "Geolocation is not supported by this browser";
  }

  function updatePosition(position) {
    if (position != null) {
      window.ys.userLat = position.coords.latitude;
      window.ys.userLon = position.coords.longitude;
      
      try {
        // When google maps was not loaded this was throwing an exception
        window.ys.userLocation = new google.maps.LatLng(window.ys.userLat, window.ys.userLon);
      }
      catch (e) {
        console.log("Google maps not loaded when initializing geo.js, userLocation LatLng not set");
      }

      window.ys.userLocationError = "";

      if (window.ys.userLocation != null && window.ys.userLocationTripMarker != null) {
        window.ys.userLocationTripMarker.setPosition(window.ys.userLocation);
      }
      if (window.ys.userLocation != null && window.ys.userLocationSearchMarker != null) {
        window.ys.userLocationSearchMarker.setPosition(window.ys.userLocation);
      }
      
      if (firstLocationUpdate == false) {
        var event = document.createEvent("HTMLEvents");
        event.initEvent('firstlocationupdate', true, true);
        document.dispatchEvent(event);
        firstLocationUpdate = true;
      }
    }
  }

Это, однако, никак не влияет на готовность PWA, страница уже полностью отрисована, и пользователь может выполнять другие задачи, пока выполняется фоновая функция.Если в приведенном выше фрагменте кода firstLocationUpdate инициализируется как true , и загрузка в фоновом режиме запрещена, тогда выигрыш маяка намного выше, как показано здесь

enter image description here

Оба случая показывают, насколько я могу судить, абсолютно одинаково.Но преимущество выполнения фоновой остановки загрузки заключается в том, что операция Locate the Nearest Stops происходит намного быстрее.

Проблема с более низким показателем для PWA заключается в том, что Chrome больше не отображает веб-страницы автоматически.приложение установить баннер.Поэтому я нахожусь в ситуации, когда мне нужно сделать выбор, и в настоящее время я предпочитаю выполнять фоновую загрузку.

Таким образом, вопрос заключается в том, существует ли обходной путь, который позволит мне ОБА с высоким PWAоценка И сделать фоновую загрузку?

Или есть какой-то способ повлиять на то, как Маяк оценивает PWA, на мой взгляд, в любом случае, фоновая загрузка приводит к тому, что маяк продлевает время для интерактивного взаимодействия, не является правильным поведением?

...