Как предотвратить кэширование браузера с помощью Play?
Часть моего приложения предоставляет файл для загрузки с помощью метода redirect()
. Я обнаружил, что Chrome (а не Firefox или IE, как ни странно) кэширует этот файл, так что одна и та же версия загружается, даже если она изменилась на стороне сервера. Я полагаю, что есть способ сказать браузеру не кэшировать файл, например, , как это в HTML, или добавив что-то в заголовок HTTP. Я мог бы, вероятно, вычислить их в веб-фреймворке более низкого уровня, но я не знаю, как добраться до заголовка в игре!, и опция HTML не будет работать, потому что это не HTML-файл.
Кажется, что всегда есть умный и простой способ делать общие задачи в игре!, так есть ли умный и простой способ предотвратить кэширование в контроллере?
Спасибо!
Правка:
Мэтт указывает мне на http.cacheControl
Настройка , которая управляет кэшированием для всего сайта. Хотя это будет работать, у меня нет проблем с кэшированием большей части сайта, особенно CSS и т. д. Если бы это было возможно, я бы ... например, управлять кэшированием для одного URL-адреса за раз (в данном случае указывающего на загружаемый файл). Это точно не будет сайт с высоким трафиком, так что это просто академический интерес.
В идеале я хотел бы сделать что-то вроде:
public static void downloadFile(String url) {
response.setCaching(false); // This is the method I'm looking for
redirect(url); // Send the response
}
4 ответа:
Play framework
response
объект имеет методsetHeader
. Вы можете добавить нужные заголовки следующим образом, например:response.setHeader("Cache-Control", "no-cache");
Я не проверял его, но похоже, что
http.cacheControl
настройка конфигурации может сработать.Http.cacheControl
Управление заголовками ответов HTTP для статических файлов: устанавливает максимальный возраст по умолчанию в секундах, сообщая браузеру пользователя, как долго он должен кэшировать страницу. Это читается только в режиме
prod
, в режимеdev
кэш отключен. Например, чтобы отправитьno-cache
:http.cacheControl=0
Default:
3600
– установить срок действия кэша равным одному часу.