我对应用程序进行了更改,在“应用程序静态文件”部分中包含了更改的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上。