문제

내 질문은 후속 조치입니다 이 주제. 나는 지금까지 본 것에서 Firebase의 단순성과 성능을 좋아합니다.

내가 이해했듯이 FireBase.js는 서버의 데이터 스냅 샷을 JavaScript 메모리의 객체로 동기화합니다. 그러나 현재이 데이터를 디스크로 캐시하는 기능은 없습니다.

결과적으로:

  1. 신청서는 시작할 때 연결해야하므로 진정한 오프라인 액세스가 없습니다.
  2. 모든 이전 데이터를 다시 전송하여 앱이 시작될 때마다 대역폭이 낭비됩니다.

스냅 샷 데이터가 JavaScript 객체로 메모리에 앉아 있으므로 JSON으로 직렬화하고 LocalStorage에 저장하는 것은 매우 사소해야하므로 다음에 앱이 온라인으로 시작 되든 아니든 다음에 정확한 응용 프로그램 상태를로드 할 수 있습니다. 그러나 Firebase.js 코드가 미니어지고 비밀성이 높기 때문에 어디서 볼지 모르겠습니다.

pouchdb couchdb 백엔드에서 이것을 잘 처리합니다. (그러나 파이어베이스의 빠른 응답 시간과 단순성이 부족합니다.)

그래서 내 질문은 다음과 같습니다.

1. 스냅 샷을 LocalStorage에 저장하기 위해 직렬화하려면 어떤 데이터가 필요합니까? 그런 다음 앱이 시작될 때 이것을 Firebase에 다시로드하려면 어떻게해야합니까?

2. FireBase.js 용 원래 비 모음 DEV 소스 코드는 어디에서 다운로드 할 수 있습니까?

(그건 그렇고, Firebase가 물에서 경쟁을 날려 버리는 데 도움이되는 두 가지 기능 : 오프라인 캐싱 및 맵 감소.)

도움이 되었습니까?

해결책

오프라인 캐싱 및 맵 감소와 같은 기능이 모두 개발 중입니다. Firebase.js 여기에서 출처를 사용할 수 있습니다 Dev 및 Debugging의 경우.

로컬로 사용하는 스냅 샷을 직렬화 할 수 있습니다 ExportVal 모든 우선 순위 데이터를 보존합니다. 우선 순위를 사용하지 않으면 간단한 가치가 다음과 같습니다.

var fb = new Firebase(URL);
fb.once('value', function(snapshot) {
   console.log('values with priorities', snapshot.exportVal());

   console.log('values without priorities', snapshot.val());
});

나중에 Firebase가 오프라인 인 경우 (사용 .info/연결 이를 결정하기 위해) 앱이로드되면 .세트() 해당 데이터를 로컬 파이어베이스에 다시 넣습니다. FireBase가 온라인으로 오면 동기화됩니다.

그러나 이것은 한 사람 만 액세스하고 변경할 수있는 정적 데이터에만 적합합니다. 예를 들어, 낙진을 고려하여 데이터를 다운로드하고 일주일 동안 로컬로 유지하면 해당 시간 동안 다른 여러 사용자가 수정 한 다음 오프라인으로 앱을로드하고 하나의 사소한 변경을 한 다음 온라인으로 나옵니다. 나의 오래된 변화는 그 사이의 모든 작업을 날려 버릴 것입니다.

보안 규칙을 사용하고 카운터/타임 스탬프를 업데이트하여 오래된 데이터를 감지하고 회귀를 방지하는이를 처리하는 방법에는 여러 가지가 있지만이 경로를 따라 가기 전에 간단한 일이 아니며 깊은 고려가 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top