Wicket DownloadLink上的setCacheDuration

时间:2013-11-25 16:18:07

标签: excel file ssl download wicket

我目前在Wicket中使用downloadLink允许用户下载创建的excel文件,然后再删除。当这通过SSL IE完成时给我一个错误: “无法下载。

Internet Explorer无法打开此站点。请求的网站不可用或无法找到。请稍后再试。 “

这里: http://support.microsoft.com/kb/323308

从上面的微软支持链接做一些阅读后,似乎是因为 因为它是通过SSL,我有

  response.setHeader("Cache-Control", "no-cache, max-age=0, must-revalidate, no-store");

我设置了我的downloadLink:

     private void setupDownloadLink()
{
   IModel excelFileModel = new AbstractReadOnlyModel()
   {
          public Object getObject() 
          { 
            return excelCreator();
          }
       };

     auditDownloadlink = new DownloadLink("auditDownloadlink", excelFileModel);
     auditDownloadlink.setOutputMarkupPlaceholderTag(true);
     auditDownloadlink.setDeleteAfterDownload(true);
     auditDownloadlink.setCacheDuration(Duration.NONE);
     auditDownloadlink.setVisible(false);

     findUserForm.add(auditDownloadlink);

  }

      However, it seems to work if I do:     auditDownloadlink.setCacheDuration(Duration.Minute); 

我想我对这件事情感到困惑。 setCacheDuration是否意味着在创建文件后多长时间,它将在删除之前可用?或者这是否意味着文件从声明开始可以获得多长时间?

在excelCreator()方法中我调用File excelfile = new File(“Access.xls”);然后继续处理所有excel工作并创建电子表格,然后在我调用的方法结束时:                FileOutputStream output = new FileOutputStream(excelfile);                workbook.write(输出);                output.close();

我设置的持续时间是从我调用File excelfile = new File(“ssaUserIDAccess.xls”)的那一刻开始的吗?

我应该为此方案使用的最佳持续时间和设置是什么?因为文件可以放弃很大,如果它足够大,可能需要一些时间来创建。

谢谢!

1 个答案:

答案 0 :(得分:0)

我不记得原因,但我们在SSL / IE上遇到了同样的问题,我们只是将缓存持续时间设置为1秒即可。只是它不能没有。我们从未找到的另一种解决方案。

auditDownloadlink.setCacheDuration(Duration.ONE_SECOND)