У меня было изменение в приложении, которое включало измененный файл JavaScript в разделе статических файлов приложения. На следующий день пришел пользователь и начал испытывать проблемы. Их браузер держал устаревшую версию этого статического файла JavaScript. Очистка кэша браузера исправила это для этого пользователя, но я бы хотел предотвратить это в будущем.
Заголовки HTTP для этого статического файла выглядят так:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: private
Expires: Wed, 31 Dec 1969 18:00:00 CST
Content-Disposition: inline; filename="myfile.js"; filename*=UTF-8''myfile.js
Cache-Control: max-age=315360000
Content-Type: application/javascript;charset=utf-8
Transfer-Encoding: chunked
Date: Tue, 23 Oct 2018 19:27:30 GMT
Заголовок Expires ушел в прошлое, но я считаю, что он игнорируется, потому что заголовок Cache-control: max-age имеет приоритет. Срок годности 10 лет. Я не могу найти, где это определено или даже если это настройка ORDS по сравнению с настройкой Tomcat. Настройки «Безопасность»> «Безопасность браузера»> «Кэш» не действуют.
В файле Tomcat web.xml нет фильтра ExpiresFilter, и его добавление не дало результата. Фактически, это отображает это в журналах Tomcat, что говорит о том, что оно установлено где-то еще:
FINE: Request "[...]" with response status "200" content-type
"application/javascript;charset=utf-8", expiration header already defined
Это на Apex 5.2, ORDS и Tomcat 7.