2012-01-24 2 views
0

JavaScript 클라이언트 코드가있는 JSP 페이지, 백엔드는 Oracle 데이터베이스에서 데이터를 가져 오는 JAVA 클래스입니다. 전체 응용 프로그램은 WebLogic 10 서버에서 실행됩니다.프록시 서버를 통한 JSP/JavaScript 페이지의 성능 저하

타이머 기능은 파일 RedbudTimer.js에 있으며 JSP 페이지가 너무처럼 시작합니다

마감일은 몇 개의이다
<script type="text/javascript" src="/common/gp/js/RedbudTimer.js"></script> 

function TimerCallback() 
{ 
    window.location.reload(); 
} 

displayTimer('<%= deadLine.toString() %>', true); 

. 0 다시 어떤 수에서 작동

Date.ONE_SECOND = 1000; 
Date.ONE_MINUTE = Date.ONE_SECOND * 60; 
Date.ONE_HOUR = Date.ONE_MINUTE * 60; 
Date.ONE_DAY = Date.ONE_HOUR * 24; 
Date.ONE_WEEK = Date.ONE_DAY * 7; 

function TimeSpan(d, toDeadline) { 
    this.time = d.getTime ? d.getTime() : Date.parse(d); 
    this.toDeadline = toDeadline; 
} 

TimeSpan.prototype.valueOf = function() { 
var val = this.time - new Date().getTime(); 
if (!this.toDeadline) val *= -1; 
return val; 
} 

TimeSpan.prototype.toString = function() { 
    var t = Math.abs(this.valueOf()); 
    var d = Math.floor (t/Date.ONE_DAY); 
    var h = Math.floor ((t % Date.ONE_DAY)/Date.ONE_HOUR); 
    var m = Math.floor ((t % Date.ONE_HOUR)/Date.ONE_MINUTE); 
    var s = Math.floor ((t % Date.ONE_MINUTE)/Date.ONE_SECOND); 
    var showDays = false; 
    var display = ''; 

    if (showDays) { 
     display = (this.valueOf() < 0 ? '-' : '') + [d, (h < 10 ? '0' : '') + h, (m < 10 ? '0' : '') + m, (s < 10 ? '0' : '') + s].join(':'); 
    } 
    else { 
    display = (this.valueOf() < 0 ? '-' : '') + [(h < 10 ? '0' : '') + h, (m < 10 ? '0' : '') + m, (s < 10 ? '0' : '') + s].join(':'); 
    } 

    return display; 
} 


function displayTimer(time, toDeadline) { 
    var ts = new TimeSpan(time, toDeadline); 

    if (ts <= 0){ 
     setTimeout("TimerCallback()", 1000); 
     clearInterval(intId); 
    } 
    else { 
     document.getElementById('counter').innerText = ts.toString(); 
     var intId = setTimeout("displayTimer('" + time + "'," + toDeadline +")", 1000); 
} 

}

방법은 타이머 카운트를하고 0에 도달하면 그것은 JSP 페이지에 TimerCallback를 호출 자바 스크립트 파일은 다음과 같다. 그것은 배포 된 서버의 내부 네트워크 내에서 실행될 때 잘 동작하지만 프록시 서버를 통해 외부에서 액세스하는 경우 매우 느리게 실행됩니다 (페이지를로드하는 데 5 분).

    응용 프로그램에
  1. 외부 액세스가 HTTPS를 통해 국경 서버
  2. 외부 사용자로부터 요청이 아파치에 의해 허용되는 아파치 웹 서버를 통해 이루어집니다
  3. : 외부에서 응용 프로그램에

    액세스는 다음과 같이 구현 아파치의 전달자가 내부 네트워크에 요청을 보냅니다.

나는 당황하고 있습니다. 왜 그렇게 느릴까요?

+0

Apache 서버에 어떤 모듈이로드 되었습니까? – Santosh

+0

구성은 다음과 같습니다. Weblogic 전달자/프록시 용 구성 파일 WeblogicCluster [서버 이름] : 7001 #WebLogicHost [서버 이름] #WeblogicPort 7001 WLSocketTimeoutSecs SetHandler 웹 로직 처리기 디버그 WLTempDir d를 ON OFF 는 DebugConfigInfo 10 #WLProxySSL : \ 온도 WLLogFile d : \ temp \ wlproxy.log lukegf

+0

지저분한 코멘트를 드려 죄송합니다. Stackoverflow가 왜 댓글을 편집하기가 어렵습니까?! – lukegf

답변

0

@Santosh,

이 당신이 찾고있는 무엇인가?

LoadModule access_module modules/mod_access.so 
LoadModule actions_module modules/mod_actions.so 
LoadModule alias_module modules/mod_alias.so 
LoadModule asis_module modules/mod_asis.so 
LoadModule auth_module modules/mod_auth.so 
LoadModule auth_anon_module modules/mod_auth_anon.so 
LoadModule auth_dbm_module modules/mod_auth_dbm.so 
LoadModule auth_digest_module modules/mod_auth_digest.so 
LoadModule autoindex_module modules/mod_autoindex.so 
LoadModule cern_meta_module modules/mod_cern_meta.so 
LoadModule cgi_module modules/mod_cgi.so 
LoadModule dav_module modules/mod_dav.so 
LoadModule dav_fs_module modules/mod_dav_fs.so 
LoadModule dir_module modules/mod_dir.so 
LoadModule env_module modules/mod_env.so 
LoadModule expires_module modules/mod_expires.so 
LoadModule file_cache_module modules/mod_file_cache.so 
LoadModule headers_module modules/mod_headers.so 
LoadModule imap_module modules/mod_imap.so 
LoadModule include_module modules/mod_include.so 
LoadModule info_module modules/mod_info.so 
LoadModule isapi_module modules/mod_isapi.so 
LoadModule log_config_module modules/mod_log_config.so 
LoadModule mime_module modules/mod_mime.so 
LoadModule mime_magic_module modules/mod_mime_magic.so 
LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_connect_module modules/mod_proxy_connect.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
LoadModule negotiation_module modules/mod_negotiation.so 
LoadModule rewrite_module modules/mod_rewrite.so 
LoadModule setenvif_module modules/mod_setenvif.so 
LoadModule speling_module modules/mod_speling.so 
LoadModule status_module modules/mod_status.so 
LoadModule unique_id_module modules/mod_unique_id.so 
LoadModule userdir_module modules/mod_userdir.so 
LoadModule usertrack_module modules/mod_usertrack.so 
LoadModule vhost_alias_module modules/mod_vhost_alias.so 
LoadModule ssl_module modules/mod_ssl.so 
LoadModule weblogic_module modules/mod_wl_20.so 
0

알았어. 모든 모듈이 필요한지 확실하지 않습니다. 나는 이것이 국경 서버의 아파치 웹 서버에 적재 된 모듈이라고 가정한다. 나는 당신이 문제를 격리하기 위하여 노호로 접근 할 것을 제안 할 것이다. 당신이 직접 액세스 할 때

  1. 액세스 샘플 비 동적 페이지 (간단한 정적 HTML 페이지 수 있습니다)와 시간은 해당 페이지를로드하는 데 걸리는 있는지 확인은 다른 프록시를 통해 (아파치 웹 서버의 경계 서버) ? 이렇게하면 동적 페이지 자체에 문제가 있는지 확인할 수 있습니다.

  2. 이 상황을 시뮬레이트 할 수있는 환경을 만들고 만드십시오. 네트워크 내의 머신에서 프록시 역할을하는 아파치 웹 서비스를 호스팅하고 나머지 설정을 수행하면 실제 프록시 설정과 동일한 방식으로 액세스 할 수 있습니다. 이 구성으로 응용 프로그램을 테스트하십시오.

  3. Apache에 문제가있는 경우 (즉, 느려짐의 원인) 문제가로드되는 모든 모듈을 분석합니다.

  4. 정말로 모든 모듈이 필요한지 확인하거나 일부 모듈을 제거 할 수 있는지 확인하십시오.

+0

또 다른 이상한 점은 Chrome에서 잘 작동한다는 것입니다. Internet Explorer에서 실행하면 속도가 느려집니다. 문제는 내가 서버를 제어 할 수 없기 때문에 쉽게 실험 할 수없고 느려지는 원인을 볼 수 없다는 것입니다. 문제의 서버는 클라이언트 사이트에 있으며, 나는 그들을 위해 맞춤형 앱을 만든 회사의 소프트웨어 개발자 다. 나는 그것을 유지하고있다. – lukegf

+0

어려운 상황 :-). 이제는 서버와 클라이언트 브라우저 간의 트래픽을 분석 할 수 있습니다. [Fiddler] (http://fiddler2.com/fiddler2/)와 같은 도구를 사용하십시오. 이 도구는 Chrome에서 정상적으로 작동하는 이유를 알려주고 IE에서 시간이 걸립니다. – Santosh

+0

IE와 Chrome에서 동일한 화면의 네트워크 성능을 분석하기 위해 두 가지 도구를 사용했습니다. IE를 분석하기 위해 Dynatrace Ajax Edition을 사용했고 Chrome 용으로 내장 웹 개발자 도구를 사용했습니다. 결과적으로 두 파일 모두 동일한 파일이로드되어 Chrome에서 오래 걸립니다. 예를 들어, IE에서 가장 오래 걸린 파일은 grid.js라는 Javascript 파일이었는데, 139 초가 걸렸지 만 Chrome에서는 등록하지 않았기 때문에로드 속도가 빨랐습니다. 나는 곤두박질 친다. 어떤 아이디어? – lukegf