Кэширование изображений WebObjects

#java #iis #webobjects

#java #iis #webobjects

Вопрос:

Я хочу кэшировать изображения, возвращаемые Java-приложением WebObjects на стороне клиента, используя Cache-Control заголовок.

Изображения извлекаются с помощью таких вызовов, как /Scripts/WebObjects.dll/App.woa/1/wr?wodata=1_9840_th

Веб-сервер использует IIS 8.5. Я безуспешно пытался добавить заголовки в конфигурацию IIS. По какой-то причине они не возвращаются в ответе.

Он WOApplication настроен setPageRefreshOnBacktrackEnabled(true) , хотя я не знаю, влияет ли это на изображения. Я вижу, что cache-control: no-cache это возвращается для обычных URL-адресов действий, но не для изображений.

Как я могу убедиться, что мои изображения кэшируются браузером при использовании WebObjects? Я не смог найти ничего, связанного с этим, в руководстве разработчика WebObjects или в WOImage документации.

Комментарии:

1. Я сомневаюсь, что setPageRefreshOnBacktrackEnabled это влияет на обработчик запроса ресурсов (поскольку он не имеет дело с компонентами). В случае сомнений вы всегда можете зарегистрировать свой собственный обработчик запроса для wr ключа (WOApp.registerRequestHandler ) и самостоятельно составить ответ.

2. Как я могу найти существующий обработчик для этих запросов? Существует ли для них обработчик по умолчанию в WebObjects?

3. Не совсем уверен, что вы имеете в виду, конечно, у WO есть обработчик по умолчанию для доставки ресурсов. Должно быть названо что-то вроде WOResourceRequestHandler , и вы можете посмотреть его по WOApplication.requestHandlerForKey("wr") .

4. @hnh Спасибо, что указал мне правильное направление. Я смог добавить заголовки, используя пользовательский обработчик запросов. Похоже, в WebObjects нет встроенной поддержки для этого. Пожалуйста, добавьте ответ на этот вопрос, чтобы я мог пометить его как правильный.

Ответ №1:

Я сомневаюсь, что setPageRefreshOnBacktrackEnabled это влияет на обработчик запроса ресурсов (поскольку он не имеет дело с компонентами / страницами).

Если вы сомневаетесь, вы всегда можете зарегистрировать свой собственный WORequestHandler для wr ключа ( WOApp.registerRequestHandler ) и составить WOResponse его самостоятельно.

WO имеет обработчик по умолчанию для доставки ресурсов, который должен быть назван примерно так WOResourceRequestHandler , и вы можете посмотреть его с помощью WOApplication.requestHandlerForKey("wr") .