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);
                            }
                        })
                    })
                });
        });
    };
  • 相关阅读:
    hdu1240 bfs 水题
    hdu 2102 BFS
    gym 101081E Polish Fortress 几何
    Gym 101081K Pope's work dp
    hdu 6188 贪心
    hdu 6186 水
    Codeforces Round #430 (Div. 2) A B 水 C dfs,思维 D trie,二进制
    hdu6152 拉姆齐定理
    hdu6165 缩点,dfs
    hdu6153 扩展KMP
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5516091.html
Copyright © 2011-2022 走看看