XPages 앱의 Apache Poi를 통해 파워 포인트 파일을 만들고 있습니다.내 Xagent의 속도를 높이려면 어떻게해야합니까?
xpage에 반복 컨트롤이 있습니다. 반복의 각 행에는 작업 (SSJS)을 수행하는 "xagent"를 시작하는 버튼이 표시됩니다.
<xp:button id="button7" value="Download">
<xp:eventHandler event="onclick" submit="true"
refreshMode="norefresh">
<xp:this.action><![CDATA[#{javascript:sessionScope.docId = obj.unid;
sessionScope.slideType = "TITLE_AND_CONTENT";
sessionScope.fieldList = ["refName","refSub","refStrength","refWeakness"];
context.redirectToPage("StreamPresentation.xsp");}]]></xp:this.action>
</xp:eventHandler></xp:button>
각 행에 대해 내보내기를 실행하는 데 약간의 시간이 걸립니다. 다음은 로그의 "시간보고"입니다.
2016-09-26 16:57:05 HTTP JVM: time:2016-09-26 16:57
2016-09-26 16:57:05 HTTP JVM: docId:6AD84C823BD8A52FC125803A0051BE49
2016-09-26 16:57:38 HTTP JVM: time:2016-09-26 16:57
2016-09-26 16:57:38 HTTP JVM: docId:660E0CC12C3E1046C1258039006AA394
2016-09-26 16:57:58 HTTP JVM: time:2016-09-26 16:57
2016-09-26 16:57:58 HTTP JVM: docId:C8DD8933E26057C3C1258039006A3ED0
어떻게 처리 속도를 높일 수 있습니까?
내 xagent 코드는 다음과 같이 약간 보이는 : 응용 프로그램의 모든 것을 속도를 결정하는 많은 많은 요인이있다
importPackage(java.lang);
importPackage(org.apache.poi.xslf.usermodel);
//getting sessionvariables
var sessSlide = sessionScope.slideType;
var docId = sessionScope.docId;
print("time:" + @Now());
print("docId:" + docId);
var sessFields = sessionScope.fieldList;
var doc:NotesDocument;
doc = database.getDocumentByUNID(docId);
var ppt: XMLSlideShow = new XMLSlideShow();
/*
* creating slides here...
/*
//The Faces Context global object provides access to the servlet environment via the external content
var extCont = facesContext.getExternalContext();
//The servlet's response object provides control to the response object
var pageResponse = extCont.getResponse();
//Get the output stream to stream binary data
var pageOutput = pageResponse.getOutputStream();
//Set the content type and headers
pageResponse.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation");
pageResponse.setHeader("Cache-Control", "no-cache");
pageResponse.setHeader("Content-Disposition", "inline; filename=" + fileName);
ppt.write(pageOutput);
pageOutput.flush();
pageOutput.close();
facesContext.responseComplete();
더 구체적으로는 xagent를 트리거하는 데 얼마나 오래 걸리는지? 제 경우에는 입력과 출력 스트림이 있습니다. –
위의 모든 요인이 영향을줍니다. 서버가 얼마나 바쁜지에 달려 있습니다. 세션 변수에 의존하지 않으면 Ajax를 병렬로 실행할 수 있습니다. – stwissel