MDL-64835 JS: Reduce cache invalidation checks
authorAndrew Nicols <andrew@nicols.co.uk>
Tue, 12 Feb 2019 23:45:02 +0000 (07:45 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Wed, 13 Feb 2019 02:13:05 +0000 (10:13 +0800)
The cache invalidation check was previously occuring every time either
the `set` or `get` function was called on the cache. However, the cache
invalidation check is based on the jsrev which is static for the
lifetime of the page.

This change moved the invalidation to happen during the setup of the AMD
module such that it only happens one time per storage type (Local +
Session).

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

index edc052e..a82abd9 100644 (file)
Binary files a/lib/amd/build/storagewrapper.min.js and b/lib/amd/build/storagewrapper.min.js differ
index d9d1147..ce92e39 100644 (file)
@@ -36,6 +36,7 @@ define(['core/config'], function(config) {
         this.hash = this.hashString(this.hashSource);
         this.prefix = this.hash + '/';
         this.jsrevPrefix = this.hashString(config.wwwroot) + '/jsrev';
+        this.validateCache();
     };
 
     /**
@@ -89,8 +90,8 @@ define(['core/config'], function(config) {
             this.storage.setItem(this.jsrevPrefix, config.jsrev);
             return;
         }
-        var moodleVersion = config.jsrev;
 
+        var moodleVersion = config.jsrev;
         if (moodleVersion != cacheVersion) {
             this.storage.clear();
             this.storage.setItem(this.jsrevPrefix, config.jsrev);
@@ -132,7 +133,6 @@ define(['core/config'], function(config) {
         if (!this.supported) {
             return false;
         }
-        this.validateCache();
         key = this.prefixKey(key);
 
         return this.storage.getItem(key);
@@ -150,7 +150,6 @@ define(['core/config'], function(config) {
         if (!this.supported) {
             return false;
         }
-        this.validateCache();
         key = this.prefixKey(key);
         // This can throw exceptions when the storage limit is reached.
         try {