[BUGFIX] Hash extension versions into requireJS bust parameter 25/61625/3
authorBenjamin Franzke <bfr@qbus.de>
Wed, 4 Sep 2019 11:45:20 +0000 (13:45 +0200)
committerAndreas Fernandez <a.fernandez@scripting-base.de>
Fri, 6 Sep 2019 11:41:33 +0000 (13:41 +0200)
commit8f7ccb3daaf5d71c409ecb6d12e20afa4f8db710
treebe973665ece30433b825fe8a5e26adec9e844993
parent8df43ae9485180bb1e9a1bce045f4e65fcc25f52
[BUGFIX] Hash extension versions into requireJS bust parameter

When a third party extension that contains a requireJS backend module is
updated, the cache bust parameter needs to be updated as well, otherwise
browsers would not download the updated asset.

We will now include all extensions that contain requireJS modules into the
requireJS bust parameter hash calculation (by extension name and version).
That means an extension update of these extensions will trigger a new
bust parameter.

This has the slight drawback that the requireJS bust parameter will need
to be re-calculated after every extension update of such extensions, but
that's actually limited to extensions that provide requireJS modules, and
better than no asset updates at all.

This patch uses the PackageManager instead of ExtensionManagementUtility
to get access to the package version using the PackageInterface. Having
the full package array available we can also drop the
GeneralUtility::getFileAbsFilename('EXT:…') indirection which ends up
calling PackageManager anyway (only with added string parsing overhead).

Releases: master, 9.5
Resolves: #89086
Change-Id: Id183c935aad60a38231eb1b39aae5baed269f8ce
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61625
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Frank Nägler <frank.naegler@typo3.org>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Frank Nägler <frank.naegler@typo3.org>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
typo3/sysext/core/Classes/Page/PageRenderer.php