2014-08-30 5 views
0

현재 외부 데이터베이스를 검색하고 지정된 검색 문자열과 일치하는 레코드를 가져 오는 웹 사이트를 만들고 있습니다. 검색은 실시간이므로 사용자가 입력 할 때 결과가 표시됩니다.JSON 대 다중 연결

이제 내가 취한 첫 번째 (현재) 접근법은 페이지가 실제로 mySQL 서버에 연결되고 AJAX를 통해 콘텐츠를 검색한다는 것인데, 사용자가 검색 상자에 모든 문자를 입력합니다.

이제는 JSON 객체 (처음에는 웹 사이트를 구축하기 시작했습니다)를 살펴보기 시작했는데, 처음에는 전체 데이터베이스를 JSON 객체로로드 한 다음 살펴보아야할까요? 그것이 검색 할 때.

이 것이 좋습니다. 더 빠를까요? 미리 감사드립니다.

+1

대신에 자주 검색 한 단어와 최근에 검색 한 단어를 볼 수 있습니다. – techuser

답변

2

전적으로 데이터의 크기와 쿼리의 복잡성에 따라 달라집니다. 합리적으로 데이터를 미리 클라이언트에 전송 한 다음 로컬로 검색 할 수 있다면 모든 로컬이고 서버를 쿼리하는 대기 시간이 없기 때문에 유용합니다. 그러나 많은 양의 데이터가 있거나 쿼리가 복잡하면 서버에서 쿼리를 수행하는 것이 더 합리적 일 수 있습니다.

하나의 크기에 맞는 솔루션은 없으며 데이터에 따라 다릅니다.

... 그리고 검색 상자에 사용자가 입력 한 모든 문자로 AJAX를 통해 콘텐츠를 검색합니다.

보통 과장입니다. 일반적으로 ajax 호출을 시작하기 전에 사용자 입력에 잠시 멈출 때까지 기다려야하므로 "james"를 빠르게 연속해서 입력하면 "j"를 검색하는 대신 "james"를 검색 한 다음 "ja" ","jam ","jame ","james "순으로 나타납니다.

예를 들어 검색 트리거가 keypress 이벤트라고 가정 해 보겠습니다.

var keypressTimer = 0; 
function handleKeypress() { 
    if (keypressTimer) { 
     cancelTimeout(keypressTimer); 
    } 
    keypressTimer = setTimeout(doSearch, 100); // 100ms = 1/10th of a second 
} 
function doSearch() { 
    var searchValue; 

    keypressTimer = 0; 
    searchValue = /*...get the search value...*/; 
    doAjaxCallUsing(searchValue); 
} 

이 (누를 것 같은 키의 "수신 거부"기계 및 전기 관련 하드웨어 엔지니어링에서) "디 바운싱"입력이라고 : 이것은 매우 일반적인 방법이 될 것입니다.

+1

죄송합니다, 나쁜 말씨는 내 부분에, 실제로 실제로 모든 키 입력과 함께 실제로 사용자가 입력을 중지 할 기다려야 구현 :) json 대 아약스에 대한 입력 주셔서 감사합니다, 난 그냥 그것을 얻을 수 있도록 기회를 줄 수 있습니다. json 객체에 대한 자세한 정보. 건배! –