2011-12-18 3 views
1

아약스를 사용하여 서버에서 검색 한 많은 양의 데이터를 처리해야하며 JavaScript로 저장해야합니다. 현재 배열을 사용하여 모든 데이터를 저장하고 있습니다.많은 양의 데이터를 자바 스크립트에 저장하는 방법

var buffer=new Array(); 
//when each ajax returns 
buffer=buffer.concat(JSON.parse(ajaxReq.responseText)); 

내 마음 속에 두 가지 질문이 있습니다 :

  1. 효율적으로 모든 데이터를 저장하는 배열을 사용하고는, 오버 플로우 문제가 내가 데이터를 얻을 수 및 자바 스크립트에 저장하는 방법이있다 1 백만 행의 데이터가 포함 된 ??
  2. concat의 성능은 어떻습니까? 어떻게 최적화 할 수 있습니까?

감사합니다.

+1

이 질문은 유용 할 수 있습니다 : http://stackoverflow.com/questions/4833480/is-this-asking-too-much-of-a-browser –

+0

아무 생각이 없기 때문에 나는 그것을 피할 것입니다. 다양한 클라이언트 시스템이 처리하거나 처리 할 수있는 작업. 나는 브라우저에서 많은 양의 데이터를 가지고있는 합당한 이유를 생각할 수 없다. 나는 서버에 처리를 오프로드하는 방법을 설정할 것입니다. –

답변

3

모든 페이지로드마다 클라이언트에 전체 데이터베이스를 덤프하는 것처럼 보이므로 특정 페이지로드시 빠른 아약스 응답을 기다리지 않아도됩니다. 솔직히 말해서 나는 지금까지 들어 본 것 중 가장 미친 짓이며, 바라건대 그렇게 잘 볼 수 있습니다.

사용자가 오랫동안 걸리지 않는 작은 아약스 전화 (google autosuggest)를 기다릴 필요가없는 경우에도 1 백만 개의 데이터베이스 행이 전송 될 때까지 기다릴 필요없이 pageload는 사용자 경험이 더욱 악화됩니다.

데이터가 localStorage (5MB)에 저장되어있는 경우에만 수행 할 수 있습니다. 실제로는 그렇지 않습니다.

+0

서버에서 데이터를 요청할 때 (간헐적으로)가 아니라 전체 데이터를 조작하는 클라이언트는 말할 것도 없습니다. –

+0

ok ,,, 5MB는 알아두면 좋은 번호입니다. 감사. – bingjie2680

8

나는 downvote가 위험하다는 것을 안다. 그러나 "JavaScript에서 1 백만 행을 저장하는 방법"에 대한 유일하게 유효한 대답은 "하지 마라."입니다.

+0

감사합니다. 귀하의 요지를 봅니다. 하지만 아약스 검색에는 시간이 걸립니다. 사용자는 데이터를 처리 할 때 중단 점을 관찰합니다. 좋은 사용자 경험을 만들고 싶습니다. – bingjie2680

+0

동의합니다. @ bingjie2680, 캐시하는 방법을 찾는 것이 좋습니다. 가능한 한 효율적으로 필요한 것을 호출하십시오. –

+2

글쎄, 나는 자바 스크립트 배열에 아무 것도 저장하지 않을 것이다. 그래서 나는 def. 이 다른 방법을 해결하기위한 작업 –

관련 문제