summaryrefslogtreecommitdiffstats
path: root/theme/javascript
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-04-06 17:13:10 -0700
committerSamy Pessé <samypesse@gmail.com>2014-04-06 17:13:10 -0700
commit9ffb1a062f6bfa4c3253eb40c89ba54e6e429fe4 (patch)
tree125ce2fb57852b3a5fe90a53c5d2197f4bfe8170 /theme/javascript
parent536c48096938ef141fdf4351739f8362e80641da (diff)
downloadgitbook-9ffb1a062f6bfa4c3253eb40c89ba54e6e429fe4.zip
gitbook-9ffb1a062f6bfa4c3253eb40c89ba54e6e429fe4.tar.gz
gitbook-9ffb1a062f6bfa4c3253eb40c89ba54e6e429fe4.tar.bz2
Use cache in localstorage to store search index
Diffstat (limited to 'theme/javascript')
-rw-r--r--theme/javascript/core/search.js23
-rw-r--r--theme/javascript/core/state.js3
2 files changed, 20 insertions, 6 deletions
diff --git a/theme/javascript/core/search.js b/theme/javascript/core/search.js
index a5399d9..bc1a31b 100644
--- a/theme/javascript/core/search.js
+++ b/theme/javascript/core/search.js
@@ -2,19 +2,32 @@ define([
"jQuery",
"lodash",
"lunr",
+ "utils/storage",
"core/state",
"core/sidebar"
-], function($, _, lunr, state, sidebar) {
+], function($, _, lunr, storage, state, sidebar) {
var index = null;
var $searchBar = state.$book.find(".book-search");
var $searchInput = $searchBar.find("input");
+ // Use a specific idnex
+ var useIndex = function(data) {
+ index = lunr.Index.load(data);
+ };
+
// Load complete index
var loadIndex = function() {
- return $.getJSON(state.basePath+"/search_index.json")
- .then(function(data) {
- index = lunr.Index.load(data);
- });
+ var cacheKey = state.revision+":"+"searchIndex";
+ var cache = storage.get(cacheKey);
+
+ if (cache) return useIndex(cache);
+
+ $.getJSON(state.basePath+"/search_index.json")
+ .then(function(index) {
+ storage.set(cacheKey, index);
+ return index;
+ })
+ .then(useIndex);
};
// Search for a term
diff --git a/theme/javascript/core/state.js b/theme/javascript/core/state.js
index 5ed11e8..79876b9 100644
--- a/theme/javascript/core/state.js
+++ b/theme/javascript/core/state.js
@@ -8,6 +8,7 @@ define([
'githubId': $book.data("github"),
'level': $book.data("level"),
- 'basePath': $book.data("basepath")
+ 'basePath': $book.data("basepath"),
+ 'revision': $book.data("revision")
};
}); \ No newline at end of file