Как кэшировать файлы интерфейса Java DWR скрипта
Я заметил, что когда мы используем DWR, есть много запросов к файлам java-скриптов из браузера. Оказалось, что DWR-скрипты не кэшируются браузером.
Заголовки ответов для повторных загрузок выглядели так:
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:1268
Content-Type:text/javascript;charset=utf-8
Date:Tue, 28 Jul 2015 11:27:17 GMT
Keep-Alive:timeout=10, max=498
Server:Apache
Vary:Accept-Encoding
Обратите внимание, что в заголовках ответа нет заголовка Last-Modified. По этой причине браузер перезагружает скрипт при каждой загрузке страницы. Этот скрипт является скриптом интерфейса DWR. Когда вы предоставляете java-методы, используя DWR (через тег create в dwr- .xml), DWR создает интерфейс javascript. Этот файл реализует методы javascript, которые вызывают удаленные методы java (используя DWREngine._execute). Сценарий интерфейса не изменяется, если методы, представленные в dwr-.xml, не изменены и приложение не будет перезапущено. Следовательно, скрипт должен был быть кешируемым.
Как добавить Last-Modified в ответ?
1 ответ
Я удивлен, что это не встроено в DWR. Вы всегда можете настроить собственный фильтр сервлетов в своем веб-приложении. Справедливо предположить, что сценарий не изменится за время существования ServletContext. Возможно, вы могли бы сохранить временную метку при запуске веб-приложения и установить для фильтра заголовок Last-Modified для /dwr/*