웹 응용 프로그램은 본래 분산적인 특성을 가지고 있습니다. 클라이언트가 처리 능력을 증가시킬수록 사용자는 클라이언트와 서버에 처리 작업을 더 많이 분산시킬 수 있게 됩니다. 처리 작업 중 일부를 클라이언트에 분산시킴으로써 응용 프로그램의 응답 속도가 증가합니다. 그러나 처리 작업을 분산하면 응용 프로그램 디자인은 더 복잡해집니다.
클라이언트와 서버에 처리 작업을 분산할 때는 두 가지 디자인 목표를 염두에 두어야 합니다. 첫째로 HTTP 연결을 통한 통신을 최소로 줄이는 것입니다. 설정한 연결이 얼마나 빠른가와는 상관없이 로컬에서 하는 처리 작업은 항상 더 빠릅니다. 반드시 필요할 때만 클라이언트와 서버 간에 정보를 전달해야 합니다.
두 번째 디자인 목표는 처리 작업을 수행하는 데 반드시 필요한 서버 리소스만을 클라이언트에 제공하는 것입니다. 서버가 클라이언트에게 더 자세한 정보를 요청하는 응답을 보내 HTTP를 통한 라운드 트립을 증가시키지 않도록 클라이언트는 요청을 보낼 때마다 필요한 정보를 충분히 제공해야 합니다. 예를 들어 클라이언트가 요청을 할 때 서버에 자신의 기능을 설명하면 서버는 클라이언트로부터 더 자세한 정보를 요청하는 대신 이 기능에 부합하는 응답을 즉시 전송할 수 있습니다. 이런 디자인 개념은 데이터베이스 액세스를 지원하는 웹 응용 프로그램 디자인에도 적용할 수 있습니다. 예를 들어 클라이언트가 주문 상태를 검사하는 경우 사용자는 클라이언트에 주문표에 있는 모든 레코드 대신 특정 주문만을 설명하는 레코드 집합을 제공해야 합니다.