2010-07-29 2 views
2

좋은 하루 되길 바랍니다..NET 페이지에서 페이징을 수행하는 가장 좋은 방법

다른 사용자가 게시 한 관련 항목 (사진 앨범)을 사용자가 검색 할 수있는 페이지가 있습니다. 각 앨범의 앨범 축소판, 제목, 저자, 등급보기 및 카테고리를 보여줍니다.

이제 관련 항목 수가 많아서 사용자가보고있는 앨범과 관련된 500 개의 사진 앨범이 있다고 할 수 있습니다. 처음 20 개를 표시하고 '모두보기'라는 링크를 놓습니다.

사용자가 모두보기를 클릭하면 페이지 당 50 개의 항목을 표시하는 페이지로 이동합니다.

옵션 1 : 리피터 \ 그리드 컨트롤 사용 사용자가 페이지를 클릭하면 (SQL을 사용하여) 올바른 항목을 얻고 그 결과를 표에 바인딩합니다. 페이지가 새로 고쳐지고 사용자에게 새 페이지가 표시됩니다. 그래서 하나의 큰 요청과 사용자는 모든 엄지 손가락을 봅니다.

옵션 2 : 사용자는 내가 그럼 내가 수동으로 그리드를 구축 등의 썸네일 파일 이름, 제목, 평가, 저자를 얻을 내가 추가 그리고 자바 스크립트 를 사용하여 요소의 src 속성을 설정하는 Ajax를 사용하는 호출기를 클릭 할 때 div에 대한 결과 격자. 사용자가 페이지 새로 고침없이 새 그리드를 봅니다.

내 관심사 : 파일 시스템 (데이터베이스가 아님)에있는 축소판 이미지와 모든 이미지 파일이 있습니다. 두 번째 접근 방식에서는 자바 스크립트가 이미지 파일을 얻기 위해 웹 서버에 50 개의 개별 요청을 보냅니다. 이것은 웹 서버에 많은 요청을 일으킬 것입니다. 대규모 동시 사용자는 이미지 파일 요청으로 서버를 가득 채 웁니다.

& 사용자 파일을 페이징하고 저장하는 가장 효율적인 방법은 무엇입니까?

내 앱이 수백만 개의 사진을 처리해야하기 때문에 파일 시스템에 이미지를 넣어서 죽을까요? 이 두 번째 대안 ID Aldso 그리 좋은 하나를

를로드 페이지 시간이 많이 걸릴 것이기 때문에

답변

2

아직 사용하지 않는 경우 CDN (Amazon S3 등의 콘텐츠 전송 네트워크)이 도움이됩니다 (여러 곳에서 동시에 다운로드 할 수 있음).

또한 하나의 이미지를 요청하는 대신 서버에서 페이지를 요청하십시오. 서버가 리턴 할 이미지의 수를 결정하게하십시오.

몇 가지 CSS 스프라이트 기법을 시도해 볼 수 있습니다.

+0

따라 올 수 없습니다. Pls는 CDN – kheya

+0

을 설명합니다. @Projapati는 당신을 위해 두문자어를 표기합니다 –

+0

@Projapati - CDN은 기본적으로 콘텐츠를 제공하기 위해 사용되는 지리적으로 위치가 지정된 웹 서버입니다. 일반적으로 웹 응용 프로그램 서버와 정적 콘텐츠 서버간에로드를 분산시키는 데 사용됩니다. 또한 일반적으로 지리적 위치이므로 페이지의 전반적인 성능과로드 시간을 늘리기 위해 최종 사용자와 가장 가까운 서버에서 콘텐츠가 제공됩니다. –

2

는 Definetely 당신은 옵션 1을 사용하면 안됩니다.

GridView/ListView 컨트롤을 사용할 수 있지만 서버 측 페이징을 사용하여 데이터를 가져올 수 있습니다. 이렇게하면 페이지 당 필요한 정보 만로드 할 수 있습니다.

현재 서버 측 페이징에 저장 프로 시저를 구현하는 방법을 볼 수 있습니다 http://www.sqlteam.com/article/server-side-paging-using-sql-server-2005

그런 다음 당신은 당신의 GRIDVIEW 실제로로드 필요하므로 페이지 만의 개인 페이지에게 PageIndexChanging 이벤트 핸들러를 바인딩 할 수 있습니다.

+1

여기에 언급 된 옵션 1과 차이가 없습니다. SQL 저장 프로 시저에 페이징이 있습니다. 문제는 SQL 호출이 아니며 모든 축소판을 가져옵니다. 짐 컨트롤 중 하나를 바인딩하고로드하는 동안 모든 이미지 엄지 손가락을 얻는 것이 더 좋습니까? 아니면 javascript를 사용하여 별도의 img 요청을 보내는 것이 좋습니까? – kheya

+0

첫 번째 옵션은 괜찮을 것입니다. 그러나 페이지의 전체 크기를 조심해야합니다. 50 개의 이미지가 많기 때문에 크기가 작아야합니다 (KB를 의미 함). 따라서 모든 이미지를로드하는 데 많은 시간이 걸리지 않습니다. –

+0

엄지 손가락은 각각 2-5 kbs입니다. – kheya

관련 문제