serii81
@serii81
Я люблю phр...

Как оптимизировать nuxt js?

Добрый день.
Хочу перейти с wordpress на nuxt.
Закончил главную страницу сайта nuxt-bludelego.herokuapp.com
И она очень долго запускается на heroku. Я купил там премиум и все равно долго запускается.

Потом проверил на локалке и оказывается, что проблема в запросах api.
В качестве админки, я использую wordpress на первых порах.
И еще сайт мультиязычный, два языка.

У меня 4 store, home, solutions, tipo и options.
И на главной(index.vue), когда первый раз загружается страница, я заполняю массивы данными.

export default {
  async fetch({ store }) {
    try {
      if (store.getters['home/home'].length === 0) {
        await store.dispatch('home/fetchHome');
      }
      if (store.getters["solutions/getSolutions"].length === 0) {
        await store.dispatch('solutions/fetchSolutions');
      }
      if (store.getters["tipo/getTipo"].length === 0) {
        await store.dispatch('tipo/fetchTipo');
      }
      if (store.getters["portfolio/getPortfolio"].length === 0) {
        await store.dispatch('portfolio/fetchPortfolio');
      }
      if(store.getters["options/getOptions"].length === 0){
        await store.dispatch('options/fetchOptions');
      }
    } catch (e) {
      console.log(e, 'e no data')
    }
  },
  components: { HomeContacts, PortofolioSlider, Clients, ChiSiamo, Solutions, HomeIntro },
}


Вроде не так уж и много информации.
Раньше разработал сайт с недвижимостью на wordpress и использовал vue inline, там форма сложная была.
Там недвижиости было 200 квартир. И я загружал на страницу все сразу, каждый раз, когда страница грузилась и то быстрее работало.
А тут приходится долго ждать.

Заранее благодарен за подсказку.
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
serii81
@serii81 Автор вопроса
Я люблю phр...
Нашел решение проблемы.
Правильно выше написали, что нужно promiseAll использовать.
И вот решение:
fetch({ store }) {
    const result = [];
    if (store.getters['home/home'].length === 0) {
      result.push(store.dispatch('home/fetchHome'));
    }
    if (store.getters["solutions/getSolutions"].length === 0) {
      result.push(store.dispatch('solutions/fetchSolutions'));
    }
    if (store.getters["tipo/getTipo"].length === 0) {
      result.push(store.dispatch('tipo/fetchTipo'));
    }
    if (store.getters["portfolio/getPortfolio"].length === 0) {
      result.push(store.dispatch('portfolio/fetchPortfolio'));
    }
    if (store.getters["options/getOptions"].length === 0) {
      result.push(store.dispatch('options/fetchOptions'));
    }

    return Promise.all(result)
      .then((data) => console.log(data))
      .catch((error) => console.log(error));
  },
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы