var kMaxScale = 4.0;
 
 
+var Cache = function cacheCache(size) {
+  var data = [];
+  this.push = function cachePush(view) {
+    var i = data.indexOf(view);
+    if (i >= 0)
+      data.splice(i);
+    data.push(view);
+    if (data.length > size)
+      data.shift().update();
+  };
+};
+
+var cache = new Cache(kCacheSize);
 var currentPageNumber = 1;
 
 var PDFView = {
   var visiblePages = PDFView.getVisiblePages();
   for (var i = 0; i < visiblePages.length; i++) {
     var page = visiblePages[i];
-    PDFView.pages[page.id - 1].draw();
+    if (PDFView.pages[page.id - 1].draw())
+      cache.push(page.view);
   }
 
   if (!visiblePages.length)