2009-04-25 5 views
3

몇 천개의 항목이있는 네 개의 외래 키를 포함하는 관리자보기가 있습니다. 브라우저에 표시되는 속도가 느립니다.django가 외래 키의 선택 상자를 생성하는 속도가 느린 이유는 무엇입니까?

raw_id_fields를 추가하여 선택 상자를 없애려면 장고 모델을 변경하면 멋지고 멋지게됩니다. 따라서 느려짐은 선택 드롭 다운의 인구 때문입니다. 또한 이것이 raw_id_fields가 존재하는 이유이기 때문에 알려진 문제입니다.

나는 느린 것을 일으키는 원인을 이해하고 싶습니다. 서버에서 선택 상자를 채우는 데 사용되는 데이터에 대한 SQL 쿼리를 수행하면 결과가 즉시 나타납니다. 따라서 Postgres는 데이터를 검색하거나 정렬하는 것이 원인이 아닙니다.

아마도 드롭 다운을 채우는 데이터를 전송하는 데 걸리는 시간입니까? 아니면 장고가하고있는 것입니까?

답변

8

엄청난 선택 목록을 전송하는 데는 상당한 시간이 걸립니다. 마크 업이 실제로 추가 될 수 있습니다. KB/MB 크기로 html 출력이 얼마나 큰지 확인하십시오. 한 번 선택 목록 (몇 천 개 항목)이 페이지를 부풀게 한 것을 기억합니다. 이전 작업에서 최대 5MB 정도의 페이지입니다. 이것은 ASP.NET 프로젝트에있었습니다. 이런 문제가있을 때 어떤 프레임 워크를 사용하든 상관 없습니다.

장고 관리 도구에서이 작업을 수행 할 수 있는지 확실하지 않지만 클라이언트에게 모든 옵션을 한꺼번에 보내지 않고 결과를 드릴 다운하려면 다단계 선택 목록이 필요합니다.

+1

그것은 600KB이므로 설명 할 수 있습니다. 감사. – Mitch

1

첫 번째해야 할 일은 gzip을 사이트에 구현하는 것입니다. 이렇게하면 응답 크기를 최소한 절반으로 줄일 수 있습니다.

그렇다면 여전히 속도가 느린 경우 올바른 값 선택을 처리 할 수있는 Ajax 자동 제안 유형 위젯을 조사하십시오. 거기에 몇 가지 문서화 된 해결책이있는 것 같습니다 : http://www.google.com/#hl=en&q=django+autocomplete+widget&btnG=Google+Search&aq=1&oq=django+autocomplete+widget&fp=jFFhzb_S4-4

관련 문제