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);
                            }
                        })
                    })
                });
        });
    };
  • 相关阅读:
    iosopendev配置
    按Home键切换到后台后会触发libGPUSupportMercury.dylib: gpus_ReturnNotPermittedKillClient导致crash
    iphone图片简单处理
    iPhone开发小工具
    iphone开发设置默认字体
    NSString+TimeCategory
    UIButton zoomin pressed
    Centos7下卸载docker
    如何清理Docker占用的磁盘空间
    美国VPS推荐1GB 50GB可以win
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5516091.html
Copyright © 2011-2022 走看看