Как сохранить запрос базы данных Firestore в Интернете, чтобы совершать меньше звонков - PullRequest
0 голосов
/ 23 октября 2019

У меня есть страница продукта со всем моим продуктом, и каждый раз, когда кто-то нажимает F5, он запускается. Я хочу сохранить весь продукт, но когда продукт добавлен, он может получить обновление один раз, чтобы уменьшить количество вызовов API.

  • Я пытался сохранить его в Cookie, но это не очень хороший способ.
  • Я пытался сделать это с помощью Http-кеш-контроля, но он не работает ( Как сохранить запросы FireStore с помощью Http cache-control? )

  • Я пробовал localstorage, но он не выполнялся при добавлении нового продукта.

// JS файл Моя попытка cookie: он работает, я получаю вызов API только каждые 0,5 дня, но если обновление происходит в моем продукте, я получаю только позже

//if cookie === undifined
const firestore = firebase.firestore()
firestore.doc("products/phones").onSnapshot(function (doc) {
    if (doc && doc.exists) {
        const products = doc.data().produc
        //Save doc.data().produc in cookie 0.5 day expirery
    }
})

Я хочу сохранить свою клиентскую часть запроса Firestore и делать запрос Firestore только тогда, когда необходимо обновить список продуктов.

1 Ответ

2 голосов
/ 23 октября 2019

Ваш второй подход не имеет шансов на работу. Файл firebase.json используется Firebase Hosting и совершенно не связан с Cloud Firestore.

Ваш первый подход может сработать, хотя вы не включили код, который фактически определяет, когда вы присоединяете слушателя onSnapshot. Но, как вы обнаружили, подключение прослушивателя не чаще, чем два раза в день, означает, что вы получаете обновления не чаще, чем два раза в день, и тем временем вы, возможно, обслуживаете устаревшие данные.

Похоже, у васвыбирать между обслуживанием свежих данных и сокращением количества обращений к серверу. Это довольно распространенный компромисс.

Существует несколько других способов уменьшить количество операций чтения документов, необходимых для сервера последних данных:

  1. Включить отметку времени, когдаДанные были обновлены в каждом документе, а затем использовать запрос только для запроса новых данных. Вы будете хранить отметку времени, когда вы в последний раз запрашивали / получали данные в локальном хранилище, и каждый раз будете использовать ее в запросе.
  2. Объедините данные для последних обновлений в один или несколько документов, чтобычитать меньше документов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...