MDL-64835 JS: Stop using the jsrev in the jsrevPrefix
authorAndrew Nicols <andrew@nicols.co.uk>
Tue, 12 Feb 2019 23:37:03 +0000 (07:37 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Wed, 13 Feb 2019 02:11:42 +0000 (10:11 +0800)
We only use the jsrevPrefix to determine if the cache should be
invalidated, but the prefix that we were using is based on the new
jsrev.

For example, the jsrevPrefix will be:

    hash(wwwroot + '/ + config.jsrev) + '/jsrev'

Where config.jsrev is the _current_ (new) jsrev.

As a result when searching for the jsrev used to store the data which is
currently in the storage cache, no key is returned, and we instead set
an 'initial' value and the cache is not cleared

This patch changes the jsrevPrefix to be:

    hash(wwwroot) + '/jsrev'

Since the wwwroot does not change, the key remains static for the
current site. As a result, when the jsrev is bumped via a Moodle cache
purge, we are able to correctly fetch the old jsrev from the cache,
determine that the jsrev has changed, and purge the cache.

lib/amd/build/storagewrapper.min.js
lib/amd/src/storagewrapper.js

index 01fd0c6..edc052e 100644 (file)
Binary files a/lib/amd/build/storagewrapper.min.js and b/lib/amd/build/storagewrapper.min.js differ
index 7f7f3e6..d9d1147 100644 (file)
@@ -35,7 +35,7 @@ define(['core/config'], function(config) {
         this.hashSource = config.wwwroot + '/' + config.jsrev;
         this.hash = this.hashString(this.hashSource);
         this.prefix = this.hash + '/';
-        this.jsrevPrefix = this.hash + '/jsrev';
+        this.jsrevPrefix = this.hashString(config.wwwroot) + '/jsrev';
     };
 
     /**