jquery로 구문 분석하는 매우 큰 XML 파일 (약 42MB)이 있습니다. ID를 기반으로 특정 노드를 선택적으로 표시해야합니다. 이렇게하면 웹 브라우저가 응답하지 않고 구문 분석을위한 평균 시간이 15 초를 초과합니다.Jquery로 XML 또는 JSON 구문 분석
내 큰 쿼리는이 큰 XML 파일을 JSON으로 변환 할 때 성능을 향상시키는 데 도움이됩니까? 다음은 XML의 샘플입니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE thesaurus SYSTEM "Thesaurus_1_4.dtd">
<thesaurus action="ExportLanguage" language="en" version="2.7" date="2011-08-15">
<options/>
<wordblocks>
<wordblock>
<term type="forbidden" lang="en" termid="18297">
<value>1,1-DIETHOXYETHANE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="30" type="valid">
<value>ACETAL</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18307">
<value>1,2,3-PROPANETRIOL</value>
</term>
<terms>
<term rel="USE" lang="en" termid="4028" type="valid">
<value>GLYCEROL</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18308">
<value>1,2,3-TRIHYDROXYBENZENE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="8094" type="valid">
<value>PYROGALLOL</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18309">
<value>1,2,4,5-TETRAMETHYLBENZENE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="2814" type="valid">
<value>DURENE</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18298">
<value>1,2-DIHYDROXYANTHRAQUINONE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="229" type="valid">
<value>ALIZARIN</value>
</term>
</terms>
</wordblock>
</wordblocks>
</thesaurus>
여기는 네이티브 JS 내가이 분석은 많은 최적화 된 확신으로, JSON의 성능을 향상시킬 것입니다하지만 귀하의 질문에 대답하려면 XML
LoadRelatedTerms = function (term) {
$.ajax({
type: "GET",
url: "THESAURUS.xml",
dataType: "xml",
success: function (xml) {
$('.items').html('');
$(xml).find('wordblock').each(function() {
$(this).children('term').each(function() {
var value = $(this).find('value').text();
if (value == term) {
$(this).parent().children('terms').children('term[level=1]').each(function() {
var id = $(this).attr('id');
var termValue = $(this).find('value').text();
$('<div class="items" id="term' + id + '"></div>').html(termValue).appendTo('#page-wrap');
});
return false;
}
});
});
}
});
동의합니다. 클라이언트 쪽과 서버 쪽에서 성능을 평가하려고합니다. 서버 측에서는 300,000 개가 넘는 레코드로 구성된 매우 복잡한 데이터베이스를 쿼리해야합니다. 또한 데이터베이스는 응용 프로그램 용 데이터베이스 서버가 아닌 다른 데이터베이스 서버에 있습니다. 따라서 서버 측에도 성능 오버 헤드가 있습니다. – itsbalur
죄송합니다. 질문에 명확하지 않았습니다. XML 파일이 서버에 있습니다. Ajax 호출이 일어나고 있으며 클라이언트에서 HTML이 업데이트 중입니다. 그렇다고하더라도 성능은 좋지 않습니다. – itsbalur
42MB 파일을 네트워크를 통해 전송하고 거기에서 파싱하는 것이 이상적이지 않다고 말하고 있습니다. 서버에서 처리 한 다음 HTML을 반환하고 클라이언트 측에서 HTML을 처리하지 않는 것이 더 좋을 수도 있습니다. – momo