• [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);
                            }
                        })
                    })
                });
        });
    };
  • 相关阅读:
    撒谎
    可怜的猪
    GIS学习笔记(五)
    国产木马冰河2.2
    矛盾
    GIS学习笔记(六)
    男人如衣服
    VS2005快捷键大全
    慧悟
    DOS命令
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5516091.html
Copyright © 2020-2023  润新知