2017-01-23 1 views
0

우리는 asp.net mvc로 작성된 단일 페이지 응용 프로그램에서 많은 성능을 압축하려고합니다. 현재의 레이아웃은 다음과 같습니다성능에 대한 Asp.net mvc SPA 응용 프로그램 서버 측 렌더링

  • 클라이언트 측 SPA는 JS/HTML5 인 + requireJS 및 KendoUI으로 작성된 SQL 데이터베이스 회담
  • Asp.net MVC 서버 측

우리의 주요 성능 문제가 될 것 같다 SPA 쪽에서는 현재 페이지에 필요한 JS 및 HTML 파일을 검색하고 mvc WebApi를 통해 SQL DB에서 데이터를 가져오고 가져 오는 Server와의 대화가 매우 쉽습니다.

저는 클라이언트 브라우저와 서버 사이의 chattiness를 제한하기 위해 아키텍처를 다소 변경하려고합니다. 나는 서버 측 렌더링에 대해 모두 읽었으나이 시점에서 성숙한 애플리케이션에이를 대충 쓴 것처럼 보입니다.

이 문제와 라이브러리를 체크 아웃하기위한 방법론에 대한 조언이 있다면 궁금하십니까?

+1

IMHO, "재 작성"은 왜 처음에는 "꽤 수다스러운"지를 확인하는 것으로 시작해야합니다. 같은 양의 채팅을 끝내면 문제를 해결할 수 있습니다 (예 : js/html은 보통 브라우저에서 캐시 된 정적 파일입니다 (___가 아닌 경우) – EdSF

+1

성능 문제가 클라이언트 쪽 사용자에게 표시되는지 여부/유용성 문제 (사용자가 말한다,이 응용 프로그램이 너무 느립니다!) 또는 serverside 리소스 (sysadmin 말합니다, 그것은 부하를 처리 할 수 ​​없습니다!) 문제? –

답변

1

나는 사용자의 성능 문제가 사용성 종류라고 가정합니다. 사용자는 응용 프로그램이 느린 것으로 느낍니다. 만약 사람들이 실제로 기억하고있는 것이 아니라, 응용 프로그램의 속도가 느려지므로 자신이하려는 작업을 완료하는 것이 어려웠을 것입니다 (미안하지만, 연구/결론의 소스를 즉시 찾을 수는 없습니다) .

하지만 어웨이.

정적 파일 문제가 문제가되지 않습니다

  • 가져 오는 중이거나 오히려 정적 파일의 번들 서비스 엔드 포인트에
  • 아약스 전화 : 나는 두 개의 매우 다른 일을 구분하여 시작할 것 . 아키텍처에 변화가 있어서는 안되지만 학습 곡선이됩니다. WebGrease (또는 다른 대안) 및/또는 BundleConfig을 사용하여 주소를 지정하십시오. 이 두 가지 모두 out-of-the-box aspnet 템플릿 프로젝트의 일부입니다.

    api 호출의 chattiness는 매우 다릅니다. 이 문제를 해결하려면 & 응용 프로그램을 검토해야합니다. 아마도

    1. 으로 시작합니다. websearch q=reduce+chattiness+of+service+design.
    2. 클라이언트가 서버와 대화하고있는 순서도를 그린다. 그리고 그 대화가 시작될 때의 스케치. 그 사진을 바탕으로
    3. , 어떻게 저장할 수있는 적은 수의 대화에 대해 생각하기 시작 :
      • 가/캐시 데이터를 정적으로 할 수 하나의 큰 히트에 도착한다?
      • Ajax 데이터 읽기는 한 번에 더 큰 데이터 덩어리를 얻을 수 있습니까?
    4. 그리고 비동기 패턴을 사용하여 지연이 표시되지 않을 수도 있습니다. Ajax 데이터 푸시는 비동기 적이어야하므로 큰 성능 저하가 발생해서는 안됩니다. 응용 프로그램이 이동하기 전에 데이터 푸시가 완료되기를 기다리는 방식으로 구성되어 있지 않은 한.
      • 사용자가 기다리지 않도록 백그라운드에서 데이터를 푸시하는 응용 프로그램 -facebook, trello의 UI 디자인을 연구하십시오.

    마지막으로, 나는 모든 UX 디자인되지 후드 아래 성능에 대한 수 있다는 것을 다시 내 개방 포인트에 온다. 사용자가 작업을 공정하게 쉽게 완료 할 수 있습니까? 실제 사용자가 천천히 말했는지 아니면 그냥 가정하고 있다고 말 했나요? 사용자와 함께 앉아서 어떻게 작동하는지 관찰하십시오. 실제로 그들을 괴롭히는 것은 무엇입니까?

관련 문제