Конечно, вы можете использовать его повторно. Самый простой способ - сохранить результат где-нибудь (правда, где угодно, но ваш магазин будет хорошим кандидатом на хранение) и изменить свой метод на:
asyncData ({ env, params, error }) {
return X ? Promise.resolve(X) : axios.get(...)
}
... где X
- это сохраненный результат вашего предыдущего вызова.
Но вы не обязаны.
Потому что по умолчанию браузер сделает это за вас. Если вы специально не отключите кеширование для вашего вызова, браузер будет считать, что тот же вызов на сервер даст тот же результат, если вы сделаете это в течение количества секунд, установленных в max-age of Cache-control
.
По сути, браузер возвращает предыдущий результат из кеша, не обращаясь к серверу, поэтому оптимизация, которую вы хотите, уже выполняется самим браузером, если вы специально не отключите ее.
Вы можете легко определить, какие вызовы обслуживались из кеша, а какие - с сервера, просмотрев вкладку «Сеть» в DevTools в Chrome. Те из кеша будут иметь (memory cache)
в столбце Size
:
... и будут иметь значение 0ms
в Time
столбец.
Если вы хотите контролировать, когда вызывать сервер и когда обслуживать кешированный результат - большинство браузеров имеют ограничение на max-age
(см. Ссылку выше) - вы можете ( и должен) хранить результат вашего предыдущего вызова и вообще не полагаться на кеш браузера (в основном внутренняя проверка внутри метода, который я предложил вверху).
Это позволит вам избежать длительного вызова после прохождения максимального возраста кеша, потому что у вас уже есть данные, если вы решите это сделать.