Отключение кэширования в browserFrame

Мы выводим сетевой файл в приложении jmix в браузере посредством browserframe. На клиенте этот файл кэшируется браузером и при обновлении файла на сервере, пользователь видит закэшированную версию. Какую опцию надо задать в browserframe, чтобы браузер на клиенте не кэшировал его содержимое?

Добрый день.

Я бы посоветовал устанавливать ресурс для BrowserFrame программно и добавлять доп. параметр к ссылке, чтобы заставлять браузер загружать новую версию, например добавлять текущее время:

browserFrame.setSource(ThemeResource.class)
                .setPath("files/browserframe-theme.html?var=" + timeSource.currentTimeMillis());

В таком случае, при каждом открытии экрана, должна загружаться свежая версия.

С уважением,
Глеб

Да, мы думали об этом, но в таком случае будет создаваться очень много файлов и хранилище забьётся.
Может есть какой-то другой вариант?

Это нужно не к физическому файлу добавлять, а к url на файл. Т.к. с точки зрения браузера, это будет новая ссылка, то кэширования не будет

Мы хотим получить ссылку на файл, лежащий на сетевом диске, и пишем

String filePath = getFileName();
var reportFile = new File(filePath);
if(!reportFile.exists()){
log.warn(“File not found”);
reportFrame.setAlternateText(“Файл не найден”);
return;
}
reportFrame.setSource(FileSource.class).setFile(reportFile);

(reportFrame это BrowserFrame)

Возможно в нашем случае стоит использовать setCacheTime()?
Подскажите пожалуйста, как правильно это сделать

Здесь возможно опечатка, т.к. у нас нет FileSource, но есть FileResource. При таком задании ресурса для browserFrame, у меня не получилось воспроизвести проблему с кэшированием файла, т.к. url формируется каждый раз разный, например:

Предположим у меня есть файл за пределами приложения и я получаю его по абсолютному пути

String filePath = "/Users/gorelov/Downloads/browserframe-theme.html";
File file = new File(filePath);
if (!file.exists()) {
    return;
}

browserFrame.setSource(FileResource.class)
        .setFile(file);

При первом открытии экрана ссылка на файл получается следующая:

<iframe src="http://localhost:8080/vaadinServlet/APP/connector/0/54/source/browserframe-theme.html" ></iframe>

После переоткрытия экрана уже другая:

<iframe src="http://localhost:8080/vaadinServlet/APP/connector/0/62/source/browserframe-theme.html" ></iframe>

Т.к. ссылка разная, то и кэширования нет.

К сожалению, у меня нет сетевого диска для тестов.

Глеб

Действительно, ссылки разные, если открывать их в рамках одной сессии.

Но если перезапустить приложение, то ссылки пойдут те же самые, по второму кругу, и будут открываться закэшированные файлы, которые были в первой сессии.

А как формируются вот эти разные числа в ссылках: 54 и 62?

Это внутренняя логика Ваадина. К сожалению у меня не вышло воспроизвести проблему с кэшем файла.

Глеб