Implement a cache in AbstractTearOff even when MetaClass.NO_CACHE is set #184
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements my proposal from jenkinsci/maven-hpi-plugin#40 (comment). Jenkins in development mode—
hpi:run
,jetty:run
,surefire:test
—setsMetaClass.NO_CACHE
flag. (Usually via the system propertystapler.jelly.noCache
, though in fact it affects Groovy views too.) This flag ensures that changes to source files are applied on every new page load, which is good, but also forces every*.jelly
or*.groovy
file to be reparsed whenever accessed—in some cases multiple times in a single HTTP response! That adds a lot of CPU overhead and contributes to page loads being noticeably slower than in production.This patch retains most of the
NO_CACHE
behavior (it is interpreted in a number of places), but caches parsed/compiled views if they have not actually been changed on disk. There is still a bit of overhead to check file timestamps but things feel quite a bit snappier duringhpi:run
, especially on a form-heavy page like/configure
.