Кажется, что директивы кэша не применяются, когда ответ ресурса содержит HTTP-заголовок Content-Disposition:inline
. Когда мы используем OmniFaces CacheControlFilter, ответ не содержит директивы Cache-Control
или Expires
. Это нормально?OmniFaces CacheControlFilter не имеет эффекта, когда ответ содержит заголовок Content-Disposition
ответ
Нет, это не по умолчанию.
Это поведение говорит о том, что код, ответственный за потоковое воспроизведение файла, выполнил response.reset()
, чтобы обеспечить четкость и чистоту ответа. Вы часто это видите в фрагментах кода copypaste, потому что стартеры в противном случае жалуются, что загрузка не работает. Например здесь: How to provide a file download from a JSF backing bean?
Учитывая, что вы используете OmniFaces, вы, вероятно, можете найти Faces#sendFile()
или FileServlet
более полезную для решения задач потокового файла в ответ. Faces#sendFile()
does not выполняют response.reset()
, а кешины FileServlet
по умолчанию 30 days, который управляется путем переопределения метода getExpireTime()
.
Спасибо, это будет очень полезно – jpl
Более чем часто ответные заголовки сбрасываются кодом, предназначенным для потоковой передачи файлов. Вы уверены, что это не так? – BalusC
Правильно. есть response.reset(); в коде – jpl