2016-12-20 1 views
0

Кажется, что директивы кэша не применяются, когда ответ ресурса содержит HTTP-заголовок Content-Disposition:inline. Когда мы используем OmniFaces CacheControlFilter, ответ не содержит директивы Cache-Control или Expires. Это нормально?OmniFaces CacheControlFilter не имеет эффекта, когда ответ содержит заголовок Content-Disposition

+0

Более чем часто ответные заголовки сбрасываются кодом, предназначенным для потоковой передачи файлов. Вы уверены, что это не так? – BalusC

+0

Правильно. есть response.reset(); в коде – jpl

ответ

2

Нет, это не по умолчанию.

Это поведение говорит о том, что код, ответственный за потоковое воспроизведение файла, выполнил 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().

+0

Спасибо, это будет очень полезно – jpl

Смежные вопросы