Lukasz Lenart created WW-5773:
---------------------------------
Summary: Version the static JavaScript URLs emitted by tag
templates
Key: WW-5773
URL: https://issues.apache.org/jira/browse/WW-5773
Project: Struts 2
Issue Type: Improvement
Components: Core Tags
Reporter: Lukasz Lenart
h2. Problem
Tag templates load their helper scripts from an unversioned URL, for example
{{${base}${staticContentPath}/optiontransferselect.js}}. Browsers cache static
content served by Struts for one day, and applications that set
{{struts.serve.static=false}} or a custom {{struts.ui.staticContentPath}} serve
their own copy.
When a release changes both a template and the script it depends on, a browser
holding the cached old script, or an application serving an outdated copy, runs
the new markup against the old JavaScript. Nothing reports an error; the widget
just stops working. WW-5772 is the first change where this shows: the
transfer-select and updownselect buttons no longer carry an {{onclick}} and
depend on a listener registered by the new {{optiontransferselect.js}} /
{{inputtransferselect.js}}.
h2. Proposal
Append a cache-busting query parameter, such as the Struts version, to the
static script (and stylesheet) URLs emitted by the templates, so an upgrade
always fetches the matching file. Applications that serve their own copy still
need to update it, but browser caching no longer masks a correct upgrade.
Related: WW-5772
--
This message was sent by Atlassian Jira
(v8.20.10#820010)