2009-02-04 3 views
3

사용자가 입력하는 몇 가지 필드를 자동으로 제안하는 앱 (asp.net/c#)을 만들었습니다. 각 사용자는 자체 자동 제안 목록을 작성하게됩니다. 항목을 추가 할 때마다 새로운 단어 인 경우 gmail처럼 자동 제안 목록에 추가됩니다.사용자에게 고유 한 자동 제안 목록을 캐싱하기 위해 취할 수있는 접근 방법은 무엇입니까?

나는 대부분의 사람들이이 문제에 관해 어떻게 생각하는지 궁금해하고 있었습니까? 모든 키 누름마다 서버를 호출하는 것이 효율적이지 않습니까? 각 사용자에 대해 하나의 항목으로 거대한 xml 파일을 만들어야합니까? 각 사용자의 xml 파일? 효율적으로 만들기 위해 어떻게 캐시합니까?

모든 종류의 질문이 있지만 기본적으로 찾고있는 것은 모범 사례입니다. 고맙습니다.

답변

1

사용자가 로그인했을 때 값을 데이터베이스에 저장하고 사용자가 로그인하면 값을 ASP.NET 세션으로 가져옵니다. 그런 다음 세션의 값을 자동 - 완전한 값. 이 방법을 사용하면 로그인 할 때 데이터베이스에 한 번만 접속하면됩니다.

+0

이것은 정확히 내가 한 일이며 끝내줍니다! – naspinski

1

Chuck Norris는 자바 스크립트 프레임 워크에 따라 서버 호출을하기 전에 클라이언트 측 검사를 작성하여 주어진 필드에 쓰여진 문자 또는 단어의 수. XML 파일은 데이터베이스에서 해당 사용자가 입력 한 정보를 기반으로 주어진 사용자에 대한 자동 제안 단어로 동적으로 생성되어야합니다.

빌드하려는 응용 프로그램에 따라 특정 데이터베이스 필드에서 전체 텍스트 SQL 쿼리를 수행하는 것이 더 쉽습니다. 성능 향상을 위해 클라이언트의 브라우저에서 캐시 할 쿠키를 만들고 응용 프로그램에서 변경 사항을 확인하도록하거나 전체 데이터베이스 쿼리를 수행하기 전에 응용 프로그램이 있는지 확인하십시오.

Chuck은 세션 변수를 사용하지 않는 것이 좋습니다. 세션 변수는 각 사용자의 메모리에 자동 제안 값을 보관해야하기 때문에 응용 프로그램의 성능이 저하 될 수 있기 때문입니다.

척은 내 뇌를 포기하기 전에 다른 것이 필요한지 알고 싶습니다.

+0

나는이 보드에 약한 사람을 걸었습니다. :) – naspinski

2

데이터 저장소
이 정보는 데이터베이스에 저장해야합니다. 필드 당 사용자 당이 유형의 정보를 보유 할 테이블을 하나 또는 두 개 만듭니다.

사용자가 텍스트 필드에 입력하기 시작하면 당신은 (AJAX를 통해) 클라이언트 측에서 데이터베이스를 조회 할 수 있습니다
클라이언트 측 쿼리. 이렇게하면 제안을 서버에 쿼리하기 전에 필드에 적어도 3 자 (ish) 문자가 나타날 때까지 기다리는 것이 가장 좋습니다. 이렇게하면 요청 수가 약간 줄어들고 클라이언트와 서버 간의 트래픽이 줄어 듭니다.

나는 많은 수의 자동 제안 건수가있는 필드에이 방법을 사용합니다. 이 방법을 사용하는 경우

캐싱
, 당신은 특정 상황에서 응답을 캐싱하여 프로세스를 최적화 할 수 있습니다.

텍스트 필드에 3자가 입력 된 후에 만 ​​쿼리가 실행된다고 가정하면 전체 결과를 캐시 할 수 있습니다. 텍스트 상자에 추가 된 문자는 반환 된 결과 수를 늘리지 않습니다. 따라서 캐시 된 결과를 계속 필터링 할 수 있습니다. 그러나 사용자가 문자를 삭제하는 경우 캐시를 새로 고침하여 가장 적합한 자동 제안 조회가 가능한지 확인할 수 있습니다.

서버 측에
미리로드 서버 측이 모든 데이터를 수집하고 페이지 요청과 함께 보낼 수 있습니다. (텍스트 필드의 onchange 이벤트에서 참조 할 수있는 자바 스크립트 배열로 푸시 다운 할 수 있습니다.이 방법으로 AJAX 호출을 할 필요가 없습니다.

가능한 자동 제안 건수가 많지 않습니다.

관련 문제