Xpages SSJS-对于大文件,输出文件的速度很慢

Xpages SSJS-对于大文件,输出文件的速度很慢,xpages,lotus-domino,java-io,ssjs,Xpages,Lotus Domino,Java Io,Ssjs,我试图使用Steve Wissel页面中的说明输出domino服务器本地文件系统中的pdf文件。 该文件将被下载,但对于20MB范围内的文件,需要几分钟的时间。有没有办法加快流媒体的速度 <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false"> <xp:this.beforeRenderRespo

我试图使用Steve Wissel页面中的说明输出domino服务器本地文件系统中的pdf文件。

该文件将被下载,但对于20MB范围内的文件,需要几分钟的时间。有没有办法加快流媒体的速度

    <?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false">

    <xp:this.beforeRenderResponse><![CDATA[#{javascript://importPackage(java.io.File);
var exCon = facesContext.getExternalContext();
var response = exCon.getResponse();
var out = response.getOutputStream();

if (out==null) {
  print("The freakn' stream isn't there");
} else {
  print("All good with the stream");
}

try {
  /*
   * Move all your existing code here...
   */
    print("setting headers");
    response.setContentType("application/octet-stream");
    response.setHeader("Content-Disposition","attachment;filename=ebook.pdf");
    response.setHeader("Cache-Control", "no-cache");

    var file:java.io.File = new java.io.File("C:\\Autotrader\\r-gswob.pdf");

    if (file.exists()) {
        print("File Exists");
    } else {
        print("file missing");
    }
    var fileIn:java.io.FileInputStream = new java.io.BufferedInputStream(new java.io.FileInputStream(file));
    var c:int;
    while ((c = fileIn.read()) != -1) {
            out.write(c);
    }

} catch (e) {
  print("Error generating dynamic PDF: " + e.toString());
} finally {
    if (fileIn != null) {
            fileIn.close();
    }
    if (out != null) {
            out.close();
    }
  facesContext.responseComplete();
}


}]]></xp:this.beforeRenderResponse></xp:view>

使用大于一个int值的缓冲区来复制文件:

var buffer=新字节[10000];
瓦伦;
而((len=fileIn.read(buffer))!=-1){
out.write(缓冲区,0,len);
}

这将大大加快下载速度。

虽然响应速度快得多,但文件不可读,而原始代码提供了一个工作文件。很奇怪。工作文件大小为18423KB,新文件大小为18428KB