2009-04-11 5 views
1

온라인 뉴스 포털을 구축하기 전에 저를 위해 잘 작동하지만 일부는 홈페이지가 조금 느린다고 말합니다. 내가 그것을 생각할 때 왜 그런지 알 수 있습니다.데이터 액세스 ASP.NET

사이트의 홈 페이지가 표시

  1. 헤드 라인
  2. 스팟 뉴스 제목과 같은 (서브 헤드 라인 사진과 함께
  3. 명소
  4. 대부분의 읽기 뉴스()
  5. 대부분의 댓글을 달았 뉴스 (제목으로)
  6. 각 뉴스 카테고리에서 5 개의 뉴스 제목 (예 : 스포츠, 경제, 지역, 건강 등 총 11 개) .)

이제 이들 각각은 db에 대한 별도의 쿼리입니다. 나는 테이블 어댑터 데이터 셋과 데이터 테이블 (표준 데이터 접근 시나리오)을 가지고 헤드 라인을 위해 테이블 ​​어댑터에 의해 데이터 테이블을 반환하는 뉴스 클래스의 비즈니스 로직을 호출한다. 거기에서, 나는 컨트롤에 바인딩하는 것만으로 데이터 테이블을 사용한다. (대부분의 경우) 객체는 예를 들어 뉴스의리스트로 그것을 변환하고 거기서 그것을 소비한다.

위의 각 작업을 수행하면 문제가없는 것으로 보입니다. 적어도 엄청난 부하를주지는 않습니다. 그러나 더 나은 방법이 있는지 궁금하게 생각합니다.

예를 들어 위에서 설명한 프로젝트는 매우 역동적 인 웹 사이트입니다. 뉴스는 기관에서 24 시간 연속 도착하면 삽입됩니다. 이 경우 캐싱이 좋지 않을 수 있습니다. 그러나 다른 한편으로, 나는 지방 신문을위한 또 다른 비슷한 프로젝트를 알고있다. 사이트는 하루에 한 번만 업데이트됩니다. 이 경우 : 오늘 만 삽입 된 모든 뉴스 항목을 포함하는 데이터 테이블을 반환 한 쿼리를 실행 한 다음 해당 데이터 테이블을 쿼리하고 헤드 라인, 스팟 및 기타 항목을 사이트의 각 위치에 배치 할 수 있습니까? 아니면 주위에 더 좋은 대안이 있습니까? 나는 다른 사람들이 가장 효율적인 방법으로 비슷한 일을 어떻게 수행 하는지를 방황하고 있습니다.

답변

2

FireBug를 사용하여 어떤 요소를로드하는 데 시간이 걸리는지 알아야한다고 생각합니다. 때로는 큰 이미지가 쇼를 망칠 수 있습니다 (그리고 화면의 이미지 크기가 항상 다운로드 크기와 관련이있는 것은 아닙니다).

두 번째로 야후 Firefox 플러그인 YSlow를 다운로드하여 느린 스크립트가 있는지 조사 할 수 있습니다.

하지만 방화범이 들려서 최고의 리뷰를 제공해야합니다. Firebug를로드 한 후 'Net'탭을 클릭하면 페이지의 각 요소의로드 시간이 표시됩니다.

+0

+1 클라이언트 사이드 프로파일 링을 위해 파이어 버그와 YSlow를 사용합니다. – Anthony

2

성능이 좋지 않은 경우 첫 번째 단계는 주변에서 시작하지 않는 것입니다. 코드를 프로파일하십시오. 느린 이유를 정확히 알아보십시오. 페이지 전송, 렌더링 또는 실제로 동적으로 페이지를 생성하는 속도가 느려 집니까? 단일 쿼리가 너무 오래 걸리나요?

병목 현상이 어디에 있는지 정확히 알아 내고 그 문제를 공격합니다.

콘텐츠가 상당히 빠르게 업데이트되는 경우에도 캐싱은 매우 좋은 아이디어입니다. 캐싱 메커니즘이 지능형이라면 많은 생성 시간을 절약 할 수 있습니다. 포럼과는 대조적으로 뉴스 포털이나 블로그의 경우 캐싱 시스템을 통해 성능을 크게 향상시킬 수 있습니다.

1

지연이 DB에서 발생한 것으로 확인되면 테이블을 검사하여 테이블의 데이터 양에 따라 필요에 따라 적절하게 색인화되거나 클러스터되었는지 확인하십시오. 또한 동적 쿼리를 사용하는 경우 저장 프로 시저를 대신 사용해보십시오.

하나의 데이터베이스 요청에서 여러 개의 쿼리를 수행하려는 경우 다음을 수행 할 수 있습니다. 처음에는 모든 쿼리가 아무렇게나 수행 될 때까지 어떤 데이터도 표시하지 않으므로 다른 모든 문제를 제외하면 모든 쿼리에 대해 DB에 다시 액세스 할 수 있습니다. DataSets는 동일한 컬렉션에서 여러 쿼리를 통해 테이블 ​​컬렉션을 생성 할 수 있습니다.

ASP.NET은 이미 캐싱 (HttpContext.Cache) 메커니즘을 제공하여 사용자가 쉽게 사용할 수있게 해줍니다. 캐싱 된 객체에 수명을 설정할 수 있기 때문에 기사와 제목이 최신이 아닌지 걱정할 필요가 없습니다.

이 웹 사이트에 WebForms를 사용하는 경우 페이지를 조금 더 빠르게로드 할 수 있도록하려면 실제로 필요하지 않은 컨트롤에 대해 ViewState를 비활성화하십시오. 페이지로드가 더 빨라지는 다른 조정 및 변경 사항은 많지 않습니다. (gzipping, 스크립트 최소화 등)

그래도이 작업을 수행하기 전에 Anthony suggested으로 작업하고 코드를 프로파일하십시오. 진정한 문제가 무엇인지 알아보십시오.