.NET 4.5를 사용하는 OData 웹 API 서비스가 있습니다. 당신이 볼 수 있듯이서버 쪽 페이징 크기를 수정하는 방법
public class WorkItemsController : EntitySetController<WorkItem, string>
{
[Queryable(PageSize=100)]
public override IQueryable<WorkItem> Get()
{## Heading ##
// go to AWS DynamoDb, get the workitems and then return
}
}
, 나는 기본적으로 100으로 서버 측 페이지 크기를 설정 : 그것은 EntitySetController에서 파생 된 WebApi 컨트롤러를 가지고있다. 나중에 Get() 함수 내에서 프로그래밍 방식으로 크기를 늘려야한다는 것을 알고 있습니다. 아무도 그것을하는 방법을 알고 있습니까?
이유를 알고 싶다면 여기에 이유가 있습니다. AWS DynamoDb는 $ skip 또는 $ top 쿼리를 지원하지 않습니다. 클라이언트가 작업 항목 모음을 가져올 때마다 DynamoDb에서 모든 작업 항목을 가져와야합니다. 숫자가 클 경우 사용자에게 100 개의 항목 만 반환 할 때마다 매우 오랜 시간이 걸립니다. 그래서 우리 전략은 우리가 매번 사용자에게 반환하는 작업 항목의 수를 두 배로 또는 세 배로하는 것입니다. 따라서 사용자는 연속 요청으로 100, 200, 400, 800 작업 항목을 가져옵니다. DynamoDb에 1500 개의 작업 항목이 있다고 가정하면 모든 항목을 다시 사용자에게 반환하는 데 4 번만 쿼리합니다. 100 같은 일정한 페이지 크기를 유지한다면 15 번 쿼리해야합니다.