zoukankan      html  css  js  c++  java
  • [PWA] 18. Clean the photo cache

    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():

    • First, go to idb, get all the writtrs from the db and get the photos which we want to keep
    • Then open the photo cache and check the url exists in the list, if not then delete it.
    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);
                            }
                        })
                    })
                });
        });
    };
  • 相关阅读:
    Python long() 函数
    Python frozenset() 函数
    java对象和构造方法的区别
    回顾方法和方法调用及加深
    面向过程&面向对象
    稀疏数组
    冒泡排序与八大排序
    Arrays类与常用功能
    二维数组的理解代码
    数组的使用
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5516091.html
Copyright © 2011-2022 走看看