2013-12-20 1 views
2

knockout js와 asp.net을 사용하는 사이트를 상속했습니다. 모든 것이로드 된 후에도 사이트는 정상적으로 작동하지만 초기로드가 많이 필요합니다. 코드를 살펴보면 약 20 개의 모델이 있으며 각 모델은 페이지로드시 서버에서 데이터를 가져 오는 아약스 메소드를 호출합니다. 서버가 js를 전송할 때 성능 문제를 일으키는 db로부터 쿼리되는 데이터가 꽤 많습니다. 그런 다음 클라이언트는 20 가지 이상의 방법으로 많은 양의 데이터를 보내고받습니다.서버 측 코드에서 녹아웃 js 모델을로드하는 모범 사례

클라이언트 측으로 보내기 전에 모든 쿼리를 서버 측에서 처리하고 해당 데이터에서 js 모델을로드하려고합니다. JSON으로 페이지의 숨겨진 div에이 데이터를 게시하고 아약스 호출 대신 모델을로드하는 방법에 대해 생각하고 있습니다.

내 최고의 질문은 무엇입니까? 이 시나리오를 최적화하는 더 좋은 방법이 있습니까?

답변

1

페이지 응답에서 20 개의 쿼리의 데이터를 인라인하면 페이지 응답 시간이 상당히 길어질 수 있습니다. 브라우저가 이전 페이지 또는 지루한 빈 페이지에 앉아 기다려야합니다.

그러나 솔루션을 그대로 유지하면 사용자가 페이지를 처음으로 훨씬 빠르게 가져올 수 있으며 준비가되면 데이터가 팝업됩니다.

데이터로드 시간이 늘어날수록 데이터가 더 잘 표시 될 수 있지만 사용자 관점에서 볼 때 성능이 저하 될 것입니다. 여기에 주제에 대한 좋은 글이 있습니다 : http://www.lukew.com/ff/entry.asp?1797

또 다른 이점은 페이지 응답 시간이 가장 느린 쿼리의 약점 일 것이라는 약점이 없다는 것입니다. 그것은 질의 타임 아웃 조건에서 매우 심각 할 것입니다.

하나의 쿼리가 실패한 경우에도 문제를 인식하고 계속 성공적인 쿼리를 인라인해야하며 실패한 쿼리를 처리해야합니다.

나는 브라우저에서 쿼리를하는 것이 훨씬 낫다고 주장 할 것이다.

20 개의 쿼리를보다 효율적으로 실행하려면 몇 가지 기술을 고려해야합니다. 단일 연결에서 모든 쿼리를 보내고 결과를 단일 연결로 다시 보내려면 SignalR과 같은 것을 사용하는 것이 좋습니다. 이전에이 기술을 큰 성공을 거두고 사용했기 때문에 느린 백엔드 서비스의 최신 결과가 반환되기 전에 캐시 된 결과를 서버 측 캐시에서 다시 스트리밍 할 수있었습니다.

+0

녹아웃으로 SignalR 물건의 링크/예가 있습니까? – rwisch45

+0

불행히도 아무도 공개적으로 공유하지 않습니다. 나는 SignalR이 존재하기 전에 수년 전에 테크닉을 구현했고, 그 후에 영원히 iframe을 사용했다. 나는 보통의 XHR 호출로 질의들의 모음을 보냈다. 실제 응답은 영원히 프레임에 나타났습니다 (상관 ID). 이것은 일부 브라우저에서 XHR 동시 요청이 2 번만 제한되어 있었기 때문에 ~ 15 일을해야했습니다. SignalR을 사용하면 구현이 훨씬 간단합니다. 이것은 녹아웃과는 아무런 관련이 없습니다. 녹아웃으로 인해 UI를 스트리밍 데이터에서 업데이트하는 것이 훨씬 간단합니다. –

+0

많은 의미가 있습니다. SignalR for SharePoint ECMAScript 호출을 살펴 보겠습니다. jquery는 페이지의 html 컨트롤에 연결되기 전에 호출이 완료 될 때까지 기다려야하기 때문에 성능이 매우 나쁘다. 사용자에게 페이지 시간이 3 초나 줄었고 입력 만하면된다고 생각했다. 페이지로드시 jquery가 실행하는 순서를 재 배열 해보십시오. 어쨌든, 확실히 내 질문에 대답했다. 도와 주셔서 감사합니다! – heilch

관련 문제