2014-11-14 5 views
5

MVC를 사용하여 POS 시스템을 개발했습니다. Windows 및 Mac의 응답 속도와 로딩 시간은 즉각적이지만 iPad에서는 페이지를로드하거나 iPad를로드하는 데 8-13 초가 걸립니다. 바구니에 물건을 추가하는 것과 같은 행동. 내가 IIS에서 압축을 사용할 웹 응용 프로그램의 속도를 향상하고 나는 또한 다음은 .js를 번들로 묶어 사용하는 모든 내 자바 스크립트 파일을 축소 된 함께 가정뿐만 아니라 페이지의 로딩이 향상되는 파일 :iPad에서 MVC 4 웹 사이트가 매우 느립니다.

  1. JQuery와 - 1.8 .2.min.js
  2. 녹아웃-2.2.0.js
  3. jquery.easing.1.3.js는
  4. b.popup.min.js는
(모달 팝업 만 6킬로바이트을 표시하는 데 사용)

다른 자바 스크립트 파일을 페이지에 사용할 수 있습니다. 5KB에서 15KB 사이입니다.이 모든 작업을 마친 후 응용 프로그램이 몇 초 더 빨라지지만 여전히 오래 걸립니다 (8-10 초).

iPad에서 비슷한 성능 문제를 경험 한 사람이 있습니까? 어떻게 해결 했습니까? 성능 향상을 위해 할 수있는 다른 방법이 있습니까?

I Windows Server 2003을 사용하고 여기에 6.0

를 IIS하고있어 내 번들 등록 코드입니다 :

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
     "~/Scripts/jquery-1.8.2.min.js", 
     "~/Scripts/jquery.easing.1.3.js", 
     "~/Scripts/knockout-2.2.0.js", 
     "~/Scripts/common/common.min.js", 
     "~/Scripts/popup.min.js" 
     )); 

    bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); 
    BundleTable.EnableOptimizations = true; 
} 

그리고 이것은 내가 마스터 페이지에 전화를 어디에 :

@using System.Configuration 
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width" /> 
    <meta name="apple-mobile-web-app-capable" content="yes"> 
    <title>Prestige SSC</title> 
    @Scripts.Render("~/bundles/jquery") 
    @RenderSection("scripts", required: false) 
    @Styles.Render("~/Content/css") 
    <script type="text/javascript"> 
     var screenRefreshTime = '@ConfigurationManager.AppSettings["ScreenRefreshTime"].ToString()'; 
     screenRefreshTime = parseInt(screenRefreshTime); 
    </script> 
</head> 
<body> 
    @RenderBody() 
</body> 
</html> 
+0

네트워크 연결 일 수 있습니다. 세 장치 모두 동일한 네트워크를 사용하고 있습니까? 내 사무실에서 무선은 훨씬 느려서 내 PC를 내 iPad와 비교하는 것이 의미가 없습니다. iPad에서 Chrome을 사용해 보셨습니까? Safari에서 Chrome을 사용하면 성능이 좋아집니다. –

+0

저는 iPad와 같은 Wi-Fi를 사용하는 Windows 노트북, Mac 북 및 Windows 태블릿을 사용해 보았습니다.이 세 가지 모두 매우 빠릅니다. 어떤 이유로 iPad의 성능 문제 만 있습니다. 예. Chrome과 Safari에서 사이트에 액세스하려고 시도했지만 속도가 느립니다. –

+1

확인하신 iPad 세대 버전을 지정하십시오. 귀하의 사이트가 모든 iPad 생성 버전에서 느리게 작동합니까? 문제의 원인은 클라이언트 측 데이터 바인딩 (Knockout을 사용하는 것을 볼 수 있습니다)입니다. 그래서 저는이 방향을보아야한다고 생각합니다. –

답변

1

는 Wireshark를 https://www.wireshark.org I는 서버가 클라이언트의 세부 사항을 해결하기 위해 NetBIOS 및 ICMP를 사용하여 클라이언트 연결을 시도되었고, 그 시간이 초과 된 문제를 했어

을 사용하여 서버의 네트워크 활동을 확인합니다.

서버의 Netbios를 사용 안 함으로 설정하고 네트워킹 문제인지 프로그래밍 문제인지 확인하십시오.

  1. 제어판으로 이동하여 네트워크 연결을 선택하십시오.
  2. 정적으로 구성 할 로컬 영역 연결을 마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭하십시오.
  3. 인터넷 프로토콜 (TCP/IP)을 누르고 속성을 누르고 고급을 누른 다음 WINS 탭을 누릅니다.
  4. TCP/IP에서 NetBIOS 사용 안함을 클릭하십시오.
2

웹 사이트 성능에 관해서는 수백만 가지 일 수 있습니다. JavaScript 파일이 문제의 원인이 될 필요는 없습니다. 다음은 몇 가지 도움이 될만한 것들입니다.

  1. iPad를 Mac/PC에 연결하고 Safari 웹 속성 도구를 사용하도록 설정하십시오. Web Inspector Tools를 사용하면 어떤 프로세스가 가장 오래 걸리는지 확인할 수 있습니다. 다음을 참조하십시오 : https://developer.apple.com/library/iad/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
  2. 무료 전자 서적에서 가능한 수정 목록을 확인하십시오. http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/avoid-find-fix-asp-problems
  3. iPad의 Chrome에서 실행 해 봅니다. Chrome은 가장 빠른 자바 스크립트 엔진을 가진 것으로 알려져 있습니다. 또한 iPad의 Chrome을 원격 디버깅 해보십시오. Chrome의 개발자 도구에는 JavaScript Profiler가 있는데 어떤 특정 코드/기능이 느린 지 확인합니다. 참조 : http://blog.prototest.com/guide-to-remote-debugging-ios-and-android-mobile-devices.
  4. Android 기반 태블릿으로 원격 디버그 할 수도 있습니다. Android 태블릿에서도 똑같은 일이 발생하면 PC Chrome을 사용하여 휴대 기기를 원격 디버깅합니다.
  5. 네트워크가 특정 장치의 트래픽을 차단합니까?
  6. 녹아웃 코드를 최적화하십시오. 녹아웃은 훌륭하지만 자동 UI 새로 고침 및 종속성 추적으로 무리 할 수 ​​있습니다.
  7. 자바 스크립트 코드를 최적화하십시오. 아이 패드 (그리고 IE 8 이하가 아닌 브라우저가 또 다른 장치/플랫폼) jQuery를 2 방식으로 더 나은 수행을 위해 jshint.com 또는 jslint.com
2

를 통해 코드를 실행합니다 ..실제로 그 무게 많은 jQuery를하고 이전 버전에 당신이 시도 할 수

그래서 unrelevant 검증 및 이전 버전과의 호환성 물건을 많이 영위 :

  1. 교체
  2. 분할
  3. jQuery를 해당 버전의 당신의 jQuery를이 나머지 명령을 포함하고

    (이 게시물 Detect Internet explorer browser version problems 기준) 짧은 jQuery를

의 이전 또는 최신 버전이 필요하면 문이 결정하는 경우를 사용

var jQuery = "~/Scripts/jquery-2.1.1.min.js"; 

if ((Request.Browser.Browser == "IE") && ((Request.Browser.MajorVersion < 9))) 
{ 
    jQuery = "~/Scripts/jquery-1.8.2.min.js"; 
} 

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
    jQuery, 
    "~/Scripts/jquery.easing.1.3.js", 
    "~/Scripts/knockout-2.2.0.js", 
    "~/Scripts/common/common.min.js", 
    "~/Scripts/popup.min.js" 
    )); 
+0

답변 해 주셔서 감사합니다.하지만 사용 해보았지만 아직 느립니다. 2.1.1.min.js는 1.8보다 10kb 작습니다. .2.min.js하지만 어쨌든 시도 ... 아니 속도 개선 –

+0

속도는 파일의 크기로 반영되지 않지만 그것이 새로운 버전의 작품 (새로운 장치에 대한 더 나은) 방식으로 반영으로 .. thsnks 업데이트 - 나는 그것을 알아 내려고 노력할 것이다. – ymz

1

wireshark를 서버에 다운로드하고 시작한 다음 패킷 흐름을 캡처하는 동안 오류를 다시 생성 해보십시오. 그런 다음 해당 응용 프로그램의 패킷을 마우스 오른쪽 단추로 클릭하고 "TCP 스트림 따르기"를 선택하십시오. 이러한 패킷을보고 필터링 할 수 있습니다.

서버가 응답하는 데 걸리는 시간과 관련하여 인바운드 요청과 아웃 바운드 응답을 찾고 싶습니다. 시간이 빠르면 < 100ms 다음에 IPAD의 각 후속 요청이 얼마나 오래 걸리는지보아야합니다. 트레이스의 상대 시간 열을 살펴 봄으로써 거래가 쉽게 이루어지는 곳을 파악할 수 있어야합니다.

이것이 순수한 클라이언트 문제인 경우 기기 측에 집중해야합니다. 네트워크 일 경우 적어도 애플리케이션을 배제 할 수 있습니다. 응용 프로그램 문제라면 수정해야 할 부분을 볼 수 있습니다.

모든 네트워크가 준비 될 때까지 클라이언트에서 응용 프로그램을 실행할 수 없습니다. 예를 들어 패킷을 전송하기 전에 DNS를 확인해야합니다. 또한 하나 이상의 중복 패킷이 전송되고 있음을 알 수 있습니다. 이것은 일반적으로 부적절한 브리징 및 라우터 문제를 나타내는 지표입니다. 또한 Hop 카운트 문제로 알려진 것이있을 수 있습니다. 이로 인해 장치가 닿는 라우터 수에 따라 지연이 발생합니다. 또한 라우터의 트래픽이 압도적으로 증가하는 라우터 호흡이있을 수 있습니다 (아키텍처가 "그냥 패킷을 버립니다"라고 말함). 이 경우 TCP는 재 시도를 시도하는데, 본질적으로 상황이 악화됩니다.

관련 문제