2012-04-27 2 views
0

railscast에서 우리의 좋은 친구 Mr. Bates는 데이터 집합을 검색, 정렬 및 페이지 매김 할 수있는 앱을 만드는 해결책을 제시합니다 . AJAX 검색을 수행 할 때 사용자가 검색 상자에 입력 한 순간에 검색 결과를 표시하는 솔루션을 제공합니다.Railscast는 프로덕션을위한 솔루션을 권장하지 않습니다. 이유를 찾고 있습니다

그는 말한다 그러나
$('#products_search input').keyup(function() { 
    $.get($('#products_search').attr('action'), ↵ 
    $('#products_search').serialize(), null, 'script'); 
    return false; 
}); 

"이것은 단지 빠른 데모이며이 작업을 수행하는 가장 좋은 방법이 아니다 있습니다 당신은 같은 것을 할 경우 사용할 수있는 몇 가지의 jQuery 플러그인이 있습니다. 여기에 자신의 솔루션입니다 프로덕션 앱에서. " 나는 그가 이것이 생산에 적합하지 않다고 왜 왜 믿는 지에 대한 설명을 찾고있다. 미리 감사드립니다!

답변

1

이 솔루션에는 두 가지 주요 문제점이 있습니다. 첫 번째는 키를 누를 때마다 HTTP (AJAX) 요청을하는 것이므로 가장 효율적인 방법은 아닙니다. 두 번째는 기본적으로 응답에서 eval을 호출하고 eval은 악의적 인 사용자가 실행하고 싶지 않은 코드를 실행할 수 있으므로 좋지 않습니다. 개선에

제안 :

  • 는 적절한 JSON 파서를 사용하여 다시 JSON으로 데이터를 전달합니다. (당신은 $.getJSON를 사용할 수 있습니다)
  • 요청을 차단하십시오 - 모든 keyUp에서 요청하지 마십시오. 타이머를 시작하고 마지막 초에 아무 키도 누르지 않은 경우에만 요청을 제출하십시오. 빨리 타자를 치르는 사람들을 요구합니다.
  • 응답을 캐시하십시오. 이미 무언가를 검색했다면 데이터를 두 번 가져 오는 것이 포인트가 아닙니다. 이 세션과 그 결과에서 이전 호출에 대한 메모를 JS 객체에 보관하십시오.