Apple은 최근 iOS8 Safari와 Safari 7.1에서 모두 indexeddb를 지원합니다. indexeddb에 약 65,000 개의 레코드를 저장하고 일부 복합 인덱스를 사용하여 쿼리하는 웹 응용 프로그램에서이를 사용하려고합니다.Safari에서 indexeddb를 매우 느리게 구현합니다.
저에게 효과적이지만 Chrome의 indexeddb 구현과 비교하면 정말 느립니다.
구체적으로 말하자면 ... Chrome의 indexeddb에 대해 2ms 걸린 쿼리는 Apple의 indexedbb에 대해 500ms가 걸립니다. 이 특정 쿼리는 IDBKeyRange.only 값을 사용하여 복합 indexeddb 인덱스 (키의 2 개 필드)를 사용하여 총 65,000 개의 문서를 약 100 개 다시 가져옵니다.
내 응용 프로그램은 저장 메커니즘으로 websql도 지원하며 Safari에서 전환 할 때 성능이 뛰어납니다. 내 쿼리는 Chrome과 마찬가지로 몇 밀리 초 안에 반환됩니다.
다른 사람이 Apple의 indexeddb 구현이 느린 데 문제가 있습니까? 더 잘 작동하도록하는 방법에 대한 제안이나 애플이 고칠 때까지 기다려야합니까?
나는 애플의 indexeddb 구현이 실제로 websql 위에있는 래퍼이며 좋은 성능을 가진 websql을 직접 사용하여 내 애플 리케이션을 구현할 수 있다는 사실은 그러한 래퍼가 잘 구현되면 잘 수행되어야한다는 것을 암시한다. 슬프게도, 그것은 아직 사실이 아니다!
업데이트 ... Safari 9가 포함 된 iOS9 베타를 설치했으며 indexeddb가 수정되었습니다. 성능이 좋고 키 및 기타 버그로 인한 문제가 사라졌습니다. 1.5GB의 json 문서를 테스트했는데 모든 것이 잘되었습니다. 또한 50MB의 데이터 크기 제한이 없어졌으며 사용자에게 데이터 저장에 대한 메시지가 표시되지 않습니다. – Category6
업데이트 2. 너무 빨리 말했습니다. iOS9 indexeddb는 50MB 제한이 사라지고 몇 가지 버그가 수정 되었기 때문에 조금 좋아졌지만 몇 천 개가 넘는 문서를 가지고 있으면 성능이 여전히 좋지 않습니다. 인덱스 쿼리에 대한 응답 시간이 5 초 이상입니다. 문서가 몇 개 이상 있으면 사용할 수 없습니다. – Category6