标签:
We cannot let photo always keep caching new data without clean the old data. If message is not display on the page anymore, we want to clean it. And also every 5 mins we want to clean the photo data.
export default function IndexController(container) { this._container = container; this._postsView = new PostsView(this._container); this._toastsView = new ToastsView(this._container); this._lostConnectionToast = null; this._dbPromise = openDatabase(); this._registerServiceWorker(); this._cleanImageCache(); var indexController = this; setInterval(function () { indexController._cleanImageCache(); }, 1000 * 60 * 5); this._showCachedMessages().then(function () { indexController._openSocket(); }); }
_leanImageCache():
IndexController.prototype._cleanImageCache = function () { return this._dbPromise.then(function (db) { if (!db) return; // TODO: open the ‘wittr‘ object store, get all the messages, // gather all the photo urls. // // Open the ‘wittr-content-imgs‘ cache, and delete any entry // that you no longer need. var photosToKeep = []; var tx = db.transaction(‘wittrs‘); return tx.objectStore(‘wittrs‘).getAll() .then(function(messages){ messages.forEach(function(message){ if(message.photo){ photosToKeep.push(message.photo); } }); return caches.open(‘wittr-content-imgs‘); }) .then(function(cache){ return cache.keys().then(function(requests){ requests.forEach(function(request){ var url = new URL(request.url); if(!photosToKeep.includes(url.pathname)){ cache.delete(request); } }) }) }); }); };
[PWA] 18. Clean the photo cache
标签:
原文地址:http://www.cnblogs.com/Answer1215/p/5516091.html