PHP, Javascript/jQuery/Ajax, JSON 및 localstorage를 사용하여 회사의 guestlist 응용 프로그램을 작성하고 있습니다. 스마트 폰에서 주로 사용됩니다. 주로 Iphone 4입니다. 애플리케이션의 검색 부분이 오프라인 모드에서 작동해야하기 때문에 localstorage를 캐시로 사용하고 있습니다.저속 검색 알고리즘 최적화 - 자바 스크립트, JSON 및 로컬 저장소
guestlist를 검색하는 동안 성능 문제가 있습니다.
응용의 흐름이
1은 JSON과 PHP 인코딩하여 서버에서 모든 손님을 검색하고 JS를 통해 다시 보내 (I 600 명을 포함 guestlist 함께 일하고 있어요이 examaple에 대한) 다음과 같습니다 AJAX. 이것은 잘 작동합니다.
var parsedMysqlData = JSON.parse(phpData);
우리 같이보고 (600) 오브젝트 함유 JSON.Array 준다 :
Object: {
Id: Int
EventId: int
guestInfo: string
guestlist: string
guestName: string
reference: string
total: int
used: int
}
을
2 JSON.Parse를 사용 PHP에서 responseText를 (phpData 불림) 파싱 3. JSON.Array를 JSON.Stringify를 사용하여 사용자의 localstorage에 저장합니다.
localStorage.setItem(0, JSON.stringify(parsedMysqlData));
4. 사용자가 우리 자신의 검색 문자열은 다음과 같이 로컬 스토리지에 JSON.parse를 사용하여 우리의 guestlist를 검색 할 수 검색을 시작 :
var currentGuestlist = JSON.parse(localStorage.getItem(0));
을 그리고 다음이가 루프 시도하여 우리의 객체를 반복
for (i=0; i<currentGuestlist.length; i++) {
// match 'currentGuestList[i]['name']' with what the user typed in search form
}
localStorage에 JSON 객체를 포함하는 배열을 저장하고 JSON으로 구문 분석하기 전에 간단히 localStorage에 정렬되지 않은 문자열을 저장하고 훨씬 빠르게 작업합니다. JSON 개체는 localStorage에 저장되는 데이터에 대한 광고 구조를 중요하게 사용합니다. 속도 문제는 JSON 객체를 사용하고 있다는 사실과 관련이 있습니다. 이전과 같이 우수한 속도 성능을 유지하면서 체계적인 방식으로 localStorage를 어떻게 구성 할 수 있습니까?
마지막으로이 앱을 가능한 빨리 만들 때 사용할 기술에 대한 조언이나 조언을 제공해 주시면 대단히 감사하겠습니다.
멋진 대답하지만이 나던 내 속도 문제를 해결하기 위해 보인다. 1. guestlist를 반복하기 전에 localStorage에서 가져옵니다. 이것은 루프 전에 수행됩니다. (4 단계 : 변수 CurrentGuestlist 참조). 내 게스트리스트를 데이터 구조로 유지한다는 것은 무엇을 의미합니까? 2. 지금 당장은 속도가 빠르며 유동적 인 코드와 느린 코드 사이의 유일한 차이점을 느낍니다.이 코드는 배열에 배치 된 문자열 대신 JSON obj를 사용하고 있다는 사실입니다. 하지만 JSON 객체로 인해 느려지는 것을 100 % 확신 할 수 있습니까? 내 검색은 이러한 객체를 포함하는 배열을 통해 진행됩니다. 3. 훌륭한 조언, thx! – nalas
제 말은 대부분 JSON.parse를 호출하지 말고 대신 결과를 저장하고 사용하는 것입니다. JSON.parse (및 localStorage.getItem())이 필요한 유일한 시간은 프로그램이 처음 시작될 때입니다. –
방금 돌아가서 검색 속도가 느려지는 것을 알려주고 싶습니다. 저장된 손님을 액세스하는 동안 LocalStorage에서 키를 사용하지 않았습니다. 그것은 매우 빠르고 유동적 인 검색과 느린 검색의 차이입니다. 여기서 우리가 배운 것은 for 루프를 사용하여 동일한 데이터를 반복하는 것보다 Key를 통해 로컬 저장소 객체에 액세스하는 것이 더 빠릅니다. 그것의 빠른 방법 ... – nalas