2012-10-23 5 views
0
  1. (대부분의) 브라우저에 대한 동기 차단 작업 인 JSON 객체 (예 : JSONP <script> DOM 노드를 통해) 읽기/파싱이 수행되고 있습니까?JSON의 확장 성

  2. JSON 개체가 너무 커서 개체의 클라이언트 쪽 작업이 금지되는 경우가 있습니다 (예 : 브라우저 잠그기, 스크립트 실행 속도가 너무 느림 등).

+0

1) 아니오 : 항상 (ajax way) json을 비동기 적으로 호출하고 있습니다. 2) 그냥 테스트. 너무 길면 빨리 작은 하중을 사용하십시오. –

답변

1

1) 예, JSON 구문 분석이 차단됩니다. 비 - 블로킹 작업의 부호는과 같이 콜백을 통과 :

$.get('/stuff/1', function (data) { 
    // do stuff with `data` 
}); 

블록 작업이 다음과 같을 것을 비 차단 된이

var stuff = JSON.parse(theData); 

JSON.parse 경우처럼 일반적으로 작성되는 반면 :

JSON.parse(theData, function (stuff) { 
    // process `stuff` 
}); 

구문 분석 JSON은 매우 빠른 작업이므로 비 블로킹 일 필요는 없습니다.

2) 정말 큽니다. JSON 구문 분석은 특히 네이티브 JSON.parse 메서드가있는 브라우저 (거의 모든 브라우저)에서 매우 빠릅니다. JSON은 간단한 형식이므로 빠른 구문 분석이 가능합니다.

2

예, JSON 문자열을 구문 분석하는 것은 차단 작업입니다. (웹 서비스에서 JSONP를 소비하는 경우 명시 적으로 JS로 문자열을 구문 분석하지 않아도된다는 점에 유의하십시오.

최신 브라우저에서 문제가 될 수있는 큰 JSON 문자열이 있어야합니다. 작업이 브라우저를 잠그는 경우 웹 작업자가이를 피할 수 있습니다. 이렇게하면 별도의 스레드에서 차단 작업을 수행 할 수 있습니다.

+0

또한 최악의 경우를 쉽게 검사 할 수 있습니다. - var t = Date.now(); JSON.parse (test_10MB_json); var delta = Date.now() - t' - 그리고 당신은 당신의 견적을 가지고 있습니다. (IE7은 그것을 좋아하지 않을 것이지만 현대 브라우저는 잘해야한다) – c69