Фоновая синхронизация с Workbox в Vue

Я пытаюсь сделать запрос синхронизации в фоновом режиме с WorkBox, в очень простом примере приложения с Vue. Я долго пересматривал свои коды, но я не нашел решения, или, возможно, что-то не так в моем коде.

Работник сервиса хорошо зарегистрирован, и когда я делаю ajax-запрос, активируется фоновая синхронизация.

VUE

<template>
  <div class="users">
    <h1>USERS</h1>
    <input type="text" v-model="qty" placeholder="How many users to find">
    <button @click.prevent="search()">How many users would you like to find?</button>
    <ul>
      <li v-for="user in users">
        {{user.email}}
      </li>
    </ul>
  </div>
</template>

<script>
import axios from 'axios'
export default {
  data(){
    return {
      users: null,
      qty: 10
    }
  },
  methods:{
    search(){
      axios.get('https://randomuser.me/api', {
        params: {
          results: this.qty
        }
      })
      .then(response => {
        console.log(response);
        this.users = response.data.results
      })
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>

VUE.CONFIG.JS

module.exports = {
  // ...other vue-cli plugin options...
  pwa: {
    name: 'My App',
    themeColor: '#4DBA87',
    msTileColor: '#000000',
    appleMobileWebAppCapable: 'yes',
    appleMobileWebAppStatusBarStyle: 'black',

    workboxPluginMode: 'GenerateSW',
    workboxOptions: {
      runtimeCaching: [{
        urlPattern: new RegExp('https://randomuser.me/api'),
        handler: 'networkOnly',
        options: {
          //background sync. conf
          backgroundSync: {
            name: 'my-queue-asier',
            options: {
              maxRetentionTime: 60 * 60,
            }
          }
        }
      }]
    }
  }
}

Это скриншоты из DevTools при запуске событий.

Когда сеть отключена, я получаю эти ошибки в консоли. Я не уверен, нормально ли это, если фоновая синхронизация работает хорошо...

background-sync зарегистрирован во вкладке indexDB

Наконец, вкладка сети. Там мы видим, что вызов API хорош, потому что когда сеть возвращается, он делает вызов, но в приложении ничего не происходит, и старые данные не заменяются новыми:/

Кто-нибудь может мне помочь? Я ищу это, но ничего не нашел...

Спасибо!

1 ответ

Если у вас есть вызов GET для кэширования, как подсказывает ваш фрагмент кода, вам не нужна фоновая синхронизация. Вам просто нужна конструкция кэширования во время выполнения с правильным обработчиком и шаблоном URL для кэширования вызовов GET. Вам понадобится фоновая синхронизация для вызовов POST/PUT/DELETE.

Другие вопросы по тегам