2013-03-08 10 views
4

Ajax 이벤트에서 응답 텍스트를 얻으면 div 메소드 내용을 jQuery .html() 메소드로 변경합니다.jQuery html() 메소드를 통해 설정할 수있는 데이터의 최대 한도는 무엇입니까?

간혹 응답 데이터 (HTML 및 스크립트 포함, 약 4MB 데이터 포함)가 있습니다. jQuery .html() 메소드를 사용하여 응답 데이터를 div 컨텐츠로 설정하는 데 더 많은 시간이 걸립니다.

누군가 내게 이유를 말해 줄 수 있습니까? 어떤 해결책이나 대안이 있습니까?

+3

더 큰 문제가 있다고 생각합니다. 예를 들어, 왜 브라우저에 한 번에 4MB의 HTML을로드해야합니까? – Fresheyeball

+0

우리는 외부 페이지를 통해 아약스 이벤트를 처리하고 있습니다. 따라서 모든 이벤트에 대해 전체 페이지 데이터를 업데이트해야합니다. –

+0

답이 잘못되었습니다. 전략을 심각하게 재검토해야합니다. – Fresheyeball

답변

3

먼저 4MB의 HTML을 정기적으로 다운로드하여 삽입하면 빠른 대화식 응용 프로그램을 만들 수 없습니다. 그것은 네트워크 돼지와 메모리 돼지가 될 것이며 잘 수행하지 못할 것입니다.

브라우저가 액세스 할 수있는 메모리 양 외에 .html() 방법에 대한 기술적 인 제한은 없습니다. .html()은 특정 제한이없는 기본 .innerHTML 속성 위에있는 셸입니다.

4MB의 HTML은 다운로드하는 데 상당한 시간이 걸리고 브라우저가 구문 분석하는 데 많은 시간이 걸립니다. 아마 당신이 보는 연기 일 겁니다. 시간은 아마 jQuery와 관련이 없습니다. 당신이 설정하고있는 실제 컨텐트와 아무 상관없는 약간의 초기 관리 작업 후에, jQuery는 단지 .innerHTML 속성을 설정하고 브라우저는 여러분이 지정한 HTML 컨텐트를 파싱합니다.

많은 HTML (예 : 다른 4MB HTML 세트)을 바꿀 경우 jQuery는 이전 내용의 모든 요소를 ​​탐색해야하고 모든 내용을 정리해야하기 때문에 훨씬 느릴 수 있습니다 제거하려고하는 요소와 관련된 jQuery 상태.


4MB의 HTML을 사용할 필요가 없도록 페이지 디자인/앱 디자인을 수정해야합니다.

+0

아 .. 좋아.하지만 IE와 Chrome의 브라우저 제한 사항을 알려주세요. –

+0

jQuery.html() 메서드가 더 많은 시간이 걸리는 스크립트를 디버깅했습니다. –

+3

@RamaRaoM - 내가 알고있는 하드 코드 된 브라우저 제한이 없습니다. 그것은 당신이 주어진 컴퓨터에 얼마나 많은 RAM과 스왑 공간을 가지고 있는지에 달려 있습니다. 모바일 브라우저는 일반적으로 데스크톱 브라우저보다 훨씬 적은 메모리에 액세스 할 수 있습니다. 4MB의 HTML을 사용하지 않도록 페이지 디자인이나 앱 디자인을 수정해야합니다. – jfriend00

관련 문제