You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin7中如何为om.vaadin.server.StreamResource设置no-store属性

Vaadin7 CSV下载资源新增no-store缓存配置方案

你之前的两种配置方式不生效,核心原因是Vaadin7的资源处理逻辑会根据cacheTime参数自动生成并覆盖Cache-Control响应头,你手动设置的头会被后续的框架默认逻辑覆盖。

正确实现方式如下:
重写StreamResource的getStream()方法,在返回自定义DownloadStream对象时直接设置完整的缓存控制头,同时不要调用setCacheTime(0)避免触发框架的自动覆盖逻辑:

// 构建CSV下载资源
StreamResource csvResource = new StreamResource("export.csv", new StreamResource.StreamSource() {
    @Override
    public InputStream getStream() {
        // 替换为实际的CSV文件输入流生成逻辑
        return new ByteArrayInputStream(csvContent.getBytes(StandardCharsets.UTF_8));
    }
}) {
    @Override
    public DownloadStream getStream() {
        DownloadStream downloadStream = super.getStream();
        // 设置完整的缓存控制头
        downloadStream.setParameter("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
        // 可选补充兼容旧浏览器的缓存头
        downloadStream.setParameter("Pragma", "no-cache");
        downloadStream.setParameter("Expires", "0");
        return downloadStream;
    }
};
// 不要调用setCacheTime(0),否则框架会重写Cache-Control头覆盖自定义配置

内容的提问来源于stack exchange,提问作者Hasintha Samith Randika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 00:00:01