Skip to content
This repository was archived by the owner on Dec 14, 2023. It is now read-only.

Commit 8e482ec

Browse files
committed
Move cache to own file and make sure we share the same cache object
1 parent c5bba5b commit 8e482ec

File tree

10 files changed

+82
-49
lines changed

10 files changed

+82
-49
lines changed

dist/prismic.io-1.1.0.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/prismic.io-1.1.2.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gulpfile.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var gulp = require('gulp'),
1111
var SOURCES = [
1212
'src/polyfill.js',
1313
'src/api.js',
14+
'src/cache.js',
1415
'src/utils.js',
1516
'src/documents.js',
1617
'src/fragments.js',

src/api.js

Lines changed: 12 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@
207207
this.url = url + (accessToken ? (url.indexOf('?') > -1 ? '&' : '?') + 'access_token=' + accessToken : '');
208208
this.accessToken = accessToken;
209209
this.requestHandler = maybeRequestHandler || Global.Prismic.Utils.request();
210-
this.apiCache = maybeApiCache || new ApiCache();
210+
this.apiCache = maybeApiCache || globalCache();
211211
this.apiCacheKey = this.url + (this.accessToken ? ('#' + this.accessToken) : '');
212212
this.apiDataTTL = maybeApiDataTTL || 5;
213213
return this;
@@ -667,52 +667,18 @@
667667
}
668668
Ref.prototype = {};
669669

670-
/**
671-
* Api cache
672-
*/
673-
function ApiCache() {
674-
this.cache = {};
675-
this.states = {};
676-
}
677-
678-
ApiCache.prototype = {
679-
680-
get: function(key, cb) {
681-
var maybeEntry = this.cache[key];
682-
if(maybeEntry && !this.isExpired(key)) {
683-
return cb(null, maybeEntry.data);
684-
}
685-
return cb();
686-
},
687-
688-
set: function(key, value, ttl, cb) {
689-
this.cache[key] = {
690-
data: value,
691-
expiredIn: ttl ? (Date.now() + (ttl * 1000)) : 0
692-
};
693-
694-
return cb();
695-
},
696-
697-
isExpired: function(key) {
698-
var entry = this.cache[key];
699-
if(entry) {
700-
return entry.expiredIn !== 0 && entry.expiredIn < Date.now();
701-
} else {
702-
return false;
703-
}
704-
},
705-
706-
remove: function(key, cb) {
707-
delete this.cache[key];
708-
return cb();
709-
},
710-
711-
clear: function(key, cb) {
712-
this.cache = {};
713-
return cb();
670+
function globalCache() {
671+
var g;
672+
if (typeof global == 'object') {
673+
g = global; // NodeJS
674+
} else {
675+
g = window; // browser
714676
}
715-
};
677+
if (!g.prismicCache) {
678+
g.prismicCache = new Global.Prismic.ApiCache();
679+
}
680+
return g.prismicCache;
681+
}
716682

717683
// -- Export Globally
718684

src/cache.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
(function (Global, undefined) {
2+
3+
"use strict";
4+
5+
/**
6+
* Api cache
7+
*/
8+
function ApiCache() {
9+
this.cache = {};
10+
this.states = {};
11+
}
12+
13+
ApiCache.prototype = {
14+
15+
get: function(key, cb) {
16+
var maybeEntry = this.cache[key];
17+
if(maybeEntry && !this.isExpired(key)) {
18+
return cb(null, maybeEntry.data);
19+
}
20+
return cb();
21+
},
22+
23+
set: function(key, value, ttl, cb) {
24+
this.cache[key] = {
25+
data: value,
26+
expiredIn: ttl ? (Date.now() + (ttl * 1000)) : 0
27+
};
28+
29+
return cb();
30+
},
31+
32+
isExpired: function(key) {
33+
var entry = this.cache[key];
34+
if(entry) {
35+
return entry.expiredIn !== 0 && entry.expiredIn < Date.now();
36+
} else {
37+
return false;
38+
}
39+
},
40+
41+
remove: function(key, cb) {
42+
delete this.cache[key];
43+
return cb();
44+
},
45+
46+
clear: function(key, cb) {
47+
this.cache = {};
48+
return cb();
49+
}
50+
};
51+
52+
Global.Prismic.ApiCache = ApiCache;
53+
54+
}(typeof exports === 'object' && exports ? exports : (typeof module === "object" && module && typeof module.exports === "object" ? module.exports : window)));

test/doc.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<script>mocha.setup('bdd')</script>
1414
<!-- Load local lib and tests. -->
1515
<script src="../src/api.js"></script>
16+
<script src="../src/cache.js"></script>
1617
<script src="../src/utils.js"></script>
1718
<script src="../src/documents.js"></script>
1819
<script src="../src/fragments.js"></script>

test/fragments.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<script>mocha.setup('bdd')</script>
1414
<!-- Load local lib and tests. -->
1515
<script src="../src/api.js"></script>
16+
<script src="../src/cache.js"></script>
1617
<script src="../src/utils.js"></script>
1718
<script src="../src/documents.js"></script>
1819
<script src="../src/fragments.js"></script>

test/test.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<script>mocha.setup('bdd')</script>
1414
<!-- Load local lib and tests. -->
1515
<script src="../src/api.js"></script>
16+
<script src="../src/cache.js"></script>
1617
<script src="../src/utils.js"></script>
1718
<script src="../src/documents.js"></script>
1819
<script src="../src/fragments.js"></script>

test/test.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,15 +372,21 @@
372372
it('Test cache', function (done) {
373373
Prismic.Api(testRepository, function (err, Api) {
374374
if (err) return done(err);
375-
var form = Api.form('products').ref(Api.master()).query('');
375+
var form = Api.form('products').ref(Api.master()).query('[[:d = at(my.product.flavour, "Caramel")]]');
376+
var olderKeys = Object.keys(Api.apiCache.cache);
376377
form.submit(function (err, response) {
377378
if (err) {
378379
console.log(err);
379380
return done(err);
380381
}
381382

382-
var keys = Object.keys(Api.apiCache.cache);
383-
var key = keys[0] === 'https://lesbonneschoses.prismic.io/api' ? keys[1] : keys[0];
383+
var key = null;
384+
Object.keys(Api.apiCache.cache).forEach(function (candidate) {
385+
if (olderKeys.indexOf(candidate) == -1) {
386+
key = candidate;
387+
}
388+
});
389+
384390
Api.apiCache.get(key, function (err, value) {
385391
assert.equal(value.results.length, response.results.length);
386392
done();

test/unit.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<script>mocha.setup('bdd')</script>
1414
<!-- Load local lib and tests. -->
1515
<script src="../src/api.js"></script>
16+
<script src="../src/cache.js"></script>
1617
<script src="../src/utils.js"></script>
1718
<script src="../src/documents.js"></script>
1819
<script src="../src/fragments.js"></script>

0 commit comments

Comments
 (0)