【问题标题】:setCacheDuration on Wicket DownloadLinkWicket DownloadLink 上的 setCacheDuration
【发布时间】:2013-11-25 16:18:07
【问题描述】:

我目前在 Wicket 中使用下载链接来允许用户下载创建的 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");

我这样设置我的下载链接:

     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 输出 = new FileOutputStream(excelfile); workbook.write(输出); 输出.close();

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

对于这种情况,我应该使用的最佳持续时间和设置是多少?因为文件可能会变得很大,如果文件足够大,可能需要一些时间来创建。

谢谢!

【问题讨论】:

    标签: excel file ssl download wicket


    【解决方案1】:

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

    auditDownloadlink.setCacheDuration(Duration.ONE_SECOND)
    

    【讨论】:

    • 是的,我也这样做了,这似乎在所有搜索案例中都有效。感谢您的验证!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多