У меня проблемы с тем, что мои запросы Ax ios GET занимают до 3-7 секунд, чтобы получить данные из моей базы данных Firebase Cloud Firestore. Я пытался найти методы оптимизации страницы, чтобы ускорить загрузку моей страницы, такие как ресурсы кэширования или оптимизация изображений, но ничто не помогает с фактическим временем запроса. Изображение ниже для запроса 1 GET, который извлекает массив объектов из базы данных. Это не так, как если бы это был большой массив, в нем в настоящее время есть только 6 объектов, и его получение все еще занимает очень много времени. Это происходит для всех моих запросов get, и я не уверен, почему.
Это не только при начальной загрузке страницы, это все еще занимает пару секунд (обычно 2-5 при последующих загрузках) для загрузки в даже после обновления страницы или перехода между страницами на моем сайте. Это совсем не согласуется, и мне было интересно, могу ли я что-нибудь сделать, чтобы улучшить скорость запроса.
![Image evidence](https://i.stack.imgur.com/kCYsM.png)
Действие для "записей" запрос выше. Я использую React Redux для получения json данных из базы данных Firebase и добавляю их в свой магазин:
// get all posts
export const getPosts = () => (dispatch) => {
dispatch({ type: LOADING_DATA });
axios
.get("/posts")
.then((res) => {
dispatch({
type: SET_POSTS,
payload: res.data,
});
})
.catch(() => {
dispatch({
type: SET_POSTS,
payload: [],
});
});
};
Редуктор:
export default function (state = initialState, action) {
switch (action.type) {
case SET_POSTS:
return {
...state,
posts: action.payload,
loading: false,
};
default:
return state;
}
}
Firebase Функции:
// fetch all posts
exports.getAllPosts = (req, res) => {
db.collection("posts")
.orderBy("createdAt", "desc")
.get()
.then(data => {
let posts = [];
data.forEach(doc => {
posts.push({
postId: doc.id,
body: doc.data().body,
userHandle: doc.data().userHandle,
createdAt: doc.data().createdAt,
commentCount: doc.data().commentCount,
likeCount: doc.data().likeCount,
userImage: doc.data().userImage
});
});
return res.json(posts);
})
.catch(err => console.error(err));
};
Еще один пример моего запроса GET для получения пользовательских данных после входа в систему: ![enter image description here](https://i.stack.imgur.com/fvaQe.png)