programing

Firestore 실시간 쿼리를 백그라운드에서 재사용 가능(비용 절감)

prostudy 2022. 5. 20. 21:37
반응형

Firestore 실시간 쿼리를 백그라운드에서 재사용 가능(비용 절감)

Firestore에서 실시간 업데이트를 듣기 위해 Firebase-js-sdk(Vue PWA)를 사용한다.

앱이 백그라운드 상태일 때 복원하려면 앱 상태에 대해 "vuex-perist"를 사용하십시오.앱 상태 외에도 동일한 매개 변수를 사용하여 동일한 컬렉션에서 .onSnapshot을 호출하여 실시간 쿼리를 다시 설정해야 한다.

앱이 백그라운드로 가기 전에 요청했던 실시간 쿼리를 소방-js-sdk가 다시 사용할 수 있을지 궁금하다.그렇지 않으면 사용자가 백그라운드 및 백그라운드로 전환할 때마다 요금이 부과된다.

도와줘서 고마워, 토마스

해결책:문제는 어떻게 하면 복원(실시간 청취자 복원 포함)이 기술적으로 작동하게 할 것인가에 대한 것이 아니었다.나는 이런 실시간 청취자 복원이 일어날 때마다 어떻게 하면 혐의를 받지 않을 수 있을지에 주로 관심이 있었다.

다음 두 가지 답변에 따라:

다음과 같은 전제 조건이 충족될 경우 요금이 부과되지 않는다.

  • 동일한 쿼리를 다시 생성(다시 동일한 이력서를 생성함)토큰. 이력서토큰은 Firestore serverside에서 쿼리를 다시 인식하기 위해 사용하는 키의 일종)
  • 해당 쿼리의 결과 집합에 대한 데이터가 변경되지 않음(화력 저장소에서 최대 30분 동안 쿼리를 추적하고 변경 사항이 발생하면 결과 집합이 무효화됨)
  • 클라이언트 SDK가 로컬 캐시된 결과 집합을 제공할 수 있도록 하는 지속성 사용
  • 결과 집합은 지난 30분(소방서에서 질의를 추적하는 최대 시간) 내에 생성되었다.더 오래된 거면 질의응답을 다시 한 번 하고 난 그 댓가로 청구될거야

당신은 당신의 main.js에서 당신의 Firebase를 초기화해야 한다. 또는 기본적으로 어플리케이션이 시작되거나 전경에 다시 왔을 때 당신의 청취자가 분리되더라도, Firebase가 시작되어 새로운 청취자가 만들어질 수 있다.

그래서 당신의 메인 j에서는 다음과 같은 것을 가지게 될 것이다.

import Firebase from 'firebase'
let config = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    storageBucket: "...",
    messagingSenderId: "..."
  };

let app = Firebase.initializeApp(config)
let db = app.database()
let booksRef = db.ref('books') 
//....etc///

설정이 올바르고 페이지가 로드될 때마다 실행되는 방법으로 수신기를 설정하는 경우, 항상 수신기가 있는 것이다.수신기를 여러 개 만들지 않도록 하십시오.

참조URL: https://stackoverflow.com/questions/52026828/is-it-possible-to-reuse-a-firestore-realtime-query-after-being-in-background-to

반응형