2011-12-03 5 views
4

결과 목록을 반환하는 검색 양식이 있으며 사용자가 결과 (가격 등)를 필터링 할 수있는 필터 영역도 있습니다. 내 질문은, 내가 클라이언트 측 자바 스크립트를 통해 필터링을해야합니까 아니면 MYSQL 선택 내의 serverside해야합니까?검색 필터, 클라이언트 측 또는 서버 측에서해야합니까?

필터링에는 상당히 많은 레벨이 있으므로, 이것을 mysql select에 넣을 때 매우 지루할 수 있습니다.

+3

'... 그래서 이것을 mysql select에 넣을 때 매우 지루할 수있다 .' 이것은 서버 측 코드를 클라이언트로 옮기는 이유가 될 수 없습니다. –

+0

그렇게 말하려하지 않았다. – user863739

답변

0

SQL에서 서버 측이어야합니다. SELECT * 같은

뭔가 WHERE 가격>는 클라이언트 측에서 그것을 할 경우, 서버에서 클라이언트로 많은 데이터를 보낼 필요가 100

.

+1

반면 데이터 크기에 따라 클라이언트에서 활용하는 것은 데이터가 한 번만 전송되어야하기 때문에 장점이 될 수 있습니다. – pimvdb

+0

글쎄, 더 많은 줄을 생각하고, 모든 행을 반환 다음 jQuery를 사용하여 데이터를 필터링 (숨기기, 표시) – user863739

+0

그것은 다릅니다. 사용자가 필터링을 자주 사용하면 클라이언트 쪽에서 데이터를 전송하면 데이터가 더 적게 전송되고 응용 프로그램의 응답 성이 향상됩니다. 한편, 필터링되지 않은 데이터가 많은 경우 특히 초기 전송 및로드가 느려질 수 있습니다. – kubetz

0

클라이언트 측에 넣으면 결과를 알아야합니다.

  1. 인터넷을 통해 훨씬 많은 데이터를 전달해야 할 수도 있습니다.

  2. 결과를 최적화하기 위해 인덱스 나 캐시와 같은 좋은 MySQL을 사용할 수 없을 수도 있습니다. 이러한 잘 설계되고 테스트 된 기능은 귀하보다 항상 뛰어납니다.

그러나 이러한 결과로 멋지다면 클라이언트 측에서이 작업을 수행하는 것이 좋습니다. 당신이 당신의 검색 결과 페이지를 매기는하지 않으면 매김 여부

를 사용하지만, 클라이언트에 모든 행을 반환하는 경우

+0

가 나는 점 1. 내가 처음에 생각하는 방법을 이해 확실하지 않다이었다에 대한 MATCH()를 사용하여 결과()를 호출하는 것입니다 MYSQL 선택 사용자도이 시점 이후를 필터링 할 수있는 옵션이 있습니다 이미 반환 된 행 따라서 이미 반환 된 콘텐츠를 필터링하는 대신 새로운 콘텐츠를 검색하는 것과는 다릅니다. – user863739

+0

@ user863739 클라이언트 측 필터가 사용자가 볼 수 없거나 볼 것으로 예상되는 많은 결과를 걸러 내면 많은 트래픽을 낭비 할 수 있습니다. 그러나 사용자가 전체 정보를 원하고 차이점을 확인하는 것처럼 여러 번 필터링하면 클라이언트 필터가 올바른 선택입니다. – lastland

7

그것은에 따라, 당신은 당신이 모든 데이터 클라이언트 측을 알고 있기 때문에 클라이언트 측을 필터링한다 .

검색 결과의 페이지 번호가 매겨지면 첫 번째 검색 결과 만 (예 : 검색 결과 10 개) 필터가 서버 측에서 완료되어야 클라이언트에 아직 페이지가없는 모든 행이 포함됩니다.

4

정말 응용 프로그램의 성격에 따라 달라집니다 얼마나 많은 데이터

  • 가?
  • 얼마나 자주 쿼리합니까?
  • 얼마나 자주 페이지를 다시로드해야합니까?

즉 페이스 북은 당신에게 친구의 이름 당신의 전체 목록을 보냅니다, 그래서 당신은 코멘트에 누군가의 이름을 입력하면, 클라이언트 측 애플리케이션 통지 그것은 (그리고 당신에게 자동 완성을 제안한다).

데이터의 전체 양이 상대적으로 작은
  • (1000 친구의 이름 * 20Byte이 동 각 ~ = 웹 사이트에 대부분의 이미지보다 데이터의 슈퍼 스칼라는, 그것을 gzip을 그리고 더 적은이다)
  • 을 : 때문에 클라이언트 측 끝났다
  • 많은 사람들이 텍스트 상자에있는 키를 누를 때마다 많이 묻습니다.
  • 응용 프로그램의 대부분은 떠나지 않고 페이지를 다시로드하기 때문에 데이터를 한 번만로드해야합니다.

일반적으로 말하자면 클라이언트가 더 많은 작업을 수행한다는 것은 응용 프로그램이 더 쉽게 확장 될 수 있다는 것을 의미합니다. 사용자가 많을수록 얻을 수있는 "CPU 성능"이 높아집니다.

관련 문제