We have a server with tomcat 9 running on RedHat linux, and a vendor provided dynamic content management system that builds jsp pages to show news article types of content based on a query string parameter. So kind of a typical single page app, where the URL would look like https://domain/path/index.jsp?id=654321
And on the page we supply the underlying java code with the dynamic component that is using the id in the query string parameter, and this has historically worked.
<meta name="field_TcmId" content="@Component.Id.ItemId">
<meta name="field_Title" content="@Component.Fields.Title">
<div class="ng-hidden">
<h1>@Component.Fields.Title</h1>
<div>@Component.Fields.BodyText</div>
</div>
Now, though after a series of hardware and software updates, the first page load after it gets published shows the content as expected. Every time after that, we see the same cached version of content, and changes to the query string parameters don't seem to change the meta tag content or hidden fields the way we expect. The title is incorrect in the client browser tab.
We have tried disabling cache on client browsers, and enabling development for the servlet in the web.xml and configuring ExpiresFilter and ExpiresByType in the web.xml filter. We have tried increasing and decreasing and disabling caching in the context.xml for tomcat. We have tried configuring cache-control = no-cache for response headers, and an Expires response header.
I am wondering if tomcat is compiling the jsp on the first load after a page gets published and visited, and then, even though the query string parameters are changing for subsequent visits, meta tag values and hidden field values aren't being updated because the modified date is not getting updated.