Vue.js 如何最小化vuejs中的数据流量

Vue.js 如何最小化vuejs中的数据流量,vue.js,vuejs2,vuex,web-traffic,Vue.js,Vuejs2,Vuex,Web Traffic,在工作中,我们考虑将Vuejs与Vuex一起用于前端。我已经将其用于私人项目 我们的一个大问题是交通问题。我们的平台需要大量数据,有时是大数据包。其中一些是真正的大,它将是更昂贵的加载一次以上 我见过很多使用vuex的vue示例,但对我来说,似乎所有示例在每次分页时都会请求相同(已加载)的数据 我真正的问题是:vuejs或general中是否有避免或解决此问题的方法?到目前为止,我发现的唯一有用的东西是 据我所知,你可以使用这个库 这里有一个例子 import Axios from 'Axios

在工作中,我们考虑将Vuejs与Vuex一起用于前端。我已经将其用于私人项目

我们的一个大问题是交通问题。我们的平台需要大量数据,有时是大数据包。其中一些是真正的大,它将是更昂贵的加载一次以上

我见过很多使用vuex的vue示例,但对我来说,似乎所有示例在每次分页时都会请求相同(已加载)的数据


我真正的问题是:vuejs或general中是否有避免或解决此问题的方法?到目前为止,我发现的唯一有用的东西是

据我所知,你可以使用这个库

这里有一个例子

import Axios from 'Axios';

import { throttleAdapterEnhancer } from 'axios-extensions';

const http = axios.create({
    baseURL: '/',
    headers: { 'Cache-Control': 'no-cache' },
    adapter: throttleAdapterEnhancer(axios.defaults.adapter, { threshold: 2 * 1000 })
});

http.get('/users'); // make real http request
http.get('/users'); // responsed from the cache
http.get('/users'); // responsed from the cache

setTimeout(() => {
    http.get('/users'); // after 2s, the real request makes again
}, 2 * 1000)
如您所见,您可以创建一个适配器并定制所需的内容。例如,在这里,缓存只保留2秒钟。因此,对/用户的第一个请求是真实的。第二个和第二个请求是缓存,最后一个在两秒钟之后,所以它是一个真实的请求


您能否更具体地说明如何保留缓存的上下文。什么时候需要重新加载缓存,在多少次之后,在哪个事件之后?

据我所知,您可以使用此库

这里有一个例子

import Axios from 'Axios';

import { throttleAdapterEnhancer } from 'axios-extensions';

const http = axios.create({
    baseURL: '/',
    headers: { 'Cache-Control': 'no-cache' },
    adapter: throttleAdapterEnhancer(axios.defaults.adapter, { threshold: 2 * 1000 })
});

http.get('/users'); // make real http request
http.get('/users'); // responsed from the cache
http.get('/users'); // responsed from the cache

setTimeout(() => {
    http.get('/users'); // after 2s, the real request makes again
}, 2 * 1000)
如您所见,您可以创建一个适配器并定制所需的内容。例如,在这里,缓存只保留2秒钟。因此,对/用户的第一个请求是真实的。第二个和第二个请求是缓存,最后一个在两秒钟之后,所以它是一个真实的请求


您能否更具体地说明如何保留缓存的上下文。何时需要重新加载缓存,在多少次之后,在哪个事件之后?

我使用的策略是将值存储到Vuex状态

我在Vuex actions中写入所有请求。在每个操作中,我都会检查Vuex状态上是否已经存在数据。如果是这样,我只需绕过请求并从状态返回数据(避免多次调用请求)。如果它不存在,我将发出请求,然后将结果存储在Vuex状态,并返回值

Vuex行动:

getLists({ state, commit }) {
  return new Promise((resolve, reject) => {
    if (state.isSetLists === false) {
      getListsFromServer((error, data) => {
        if (error) {
          reject(error);
        } else {
          console.log('call to getLists successful:', data);
          commit('setLists', data.lists);
          resolve(data.lists);
        }
      });
    } else {
      resolve(state.lists);
    }
  });
},
然后,集合列表将按如下方式处理:

setLists(state, lists) {
  state.isSetLists = true;
  state.lists = lists;
},

通过这种方式,用户可以随意翻页,每次只调用一次请求。

我使用的策略是将值存储在Vuex状态

我在Vuex actions中写入所有请求。在每个操作中,我都会检查Vuex状态上是否已经存在数据。如果是这样,我只需绕过请求并从状态返回数据(避免多次调用请求)。如果它不存在,我将发出请求,然后将结果存储在Vuex状态,并返回值

Vuex行动:

getLists({ state, commit }) {
  return new Promise((resolve, reject) => {
    if (state.isSetLists === false) {
      getListsFromServer((error, data) => {
        if (error) {
          reject(error);
        } else {
          console.log('call to getLists successful:', data);
          commit('setLists', data.lists);
          resolve(data.lists);
        }
      });
    } else {
      resolve(state.lists);
    }
  });
},
然后,集合列表将按如下方式处理:

setLists(state, lists) {
  state.isSetLists = true;
  state.lists = lists;
},

通过这种方式,用户可以浏览所有他们想要的内容,并且每次只调用一次请求。

谢谢,帮了我很多忙!这是一个很大的鼓舞。所以我知道我有个主意!:)谢谢,帮了我很多忙!这是一个很大的鼓舞。所以我知道我有个主意!:)