我在XPages應用程序中通過Apache Poi創建了powerpoint文件。如何加快我的Xagent?
在xpage上我有一個重複控制,repeat中的每一行顯示一個按鈕,它啓動一個執行作業的「xagent」(SSJS)。
<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